A diferencia de muchos otros lenguajes de programación, PHP no tiene un pensamiento unificador o un conjunto de ideas centrales: comenzó como un conjunto muy pragmático de scripts perl, y se agregaron características según sea necesario, sin un proceso de diseño formal. El resultado es un lenguaje bastante útil y completo, pero no muy consistente por sí mismo. La inmensa popularidad del idioma empeora las cosas; Tan pronto como se introduce una nueva característica, prácticamente se establece en piedra, porque todos comienzan a usarla. Por lo tanto, se han consolidado algunos errores de diseño, y al equipo de PHP le resulta muy difícil lograr que las personas se alejen de ellos, register_globals
y magic_quotes
son solo dos ejemplos de cosas que parecían buenas ideas en ese momento pero que resultaron desenfrenadas.
Otro factor es la cultura que creció alrededor de PHP. Cuando su popularidad comenzó a crecer, el caso de uso típico para PHP fue agregar pequeños fragmentos de funcionalidad del lado del servidor en documentos HTML estáticos. Una gran parte del público objetivo eran aficionados y no programadores que usaban PHP para agregar un poco de cosas dinámicas a sus sitios web estáticos. La cultura resultante es muy pragmática, sin mucho interés en establecer un "camino apropiado"; Si bien es posible escribir PHP bastante elegante, una gran parte de la comunidad de usuarios simplemente no tiene mucho interés en él, siempre y cuando funcione.
Por el contrario, lenguajes como python, ruby, Lisp, C #, Haskell y otros han tenido una filosofía desde el principio, y la comunidad generalmente la adopta y empuja el lenguaje a la altura. (En caso de que esté interesado, escriba import this
una sesión interactiva de Python). Tener una filosofía significa que hay una guía para usar y extender el idioma, y también conduce a una comunidad más homogénea: si no está de acuerdo con la filosofía, es más probable que simplemente se vaya y encuentre una que se adapte mejor a usted ; Es más probable que la comunidad resultante llegue a un consenso sobre todo tipo de cosas.
Dicho esto, PHP tiene fortalezas y debilidades, así como oscuros casos extremos; escribir código PHP idiomático significa usar las fortalezas y evitar las debilidades y las obscuridades, al igual que con cualquier otro lenguaje.