Puedo asegurar que lo he intentado. He buscado las razones por las que PHP mola. Temo haber encontrado pocas.

Aún así, espero que este artículo ayude a conocer mejor el lenguaje. Quien sabe… A lo mejor vosotros podéis ayudarme!

Actualización 2012-07-10: Aunque no es una lista exhaustiva, me ha parecido interesante añadir al “no-mola” la ausencia de hilos.

PHP mola

Tipado dinámico

Puedes utilizar una variable para almacenar cualquier valor, sin importar el tipo de la variable.

Barato

Habitualmente puede costar hasta 50 veces menos que un servidor Java.

Extendido

Funciona en todas partes. Raro es el servidor que no lo soporta. Además, su despliegue suele ser poco doloroso: simplemente funciona.

Poco más que HTML

Comenzar en PHP es lo mismo que utilizar HTML y añadir alguna pequeña funcionalidad. Poco a poco, se termina creando un programa más complejo donde ya se separan las capas MVC y demás, pero comenzar a programar en PHP puede empezar por, simplemente, un acceso a base de datos desde HTML (sí, un horror).

Muchas librerías

Hay muchísimo código escrito en PHP y resulta tremendamente sencillo encontrar una librería que te resuelva un problema.

PHP no mola

Una función para cada cosa

Tengo una teoría: Si el API de PHP tuviera 4 veces más funciones, no sería posible encontrar ningún nombre de función de menos de 10 caracteres que fuera medianamente legible.

PHP tiene funciones muy similares que se diferencian en matices. Y tiene muchos matices.

La API estándar es tan amplia, que resulta casi imposible hacer algo sin tener que consultarla. Sin embargo, no incluye a penas más funcionalidad que la API básica de C, ni grandes diferencias de utilización.

Espacios de nombres

Hasta la última versión no ha tenido espacios de nombres. No está mal, tener algo básico en la versión 5.3.0.

No homogéneo

Las reglas de nombrado de las funciones de la API no siguen ningún estándar, y puede que encuentres funciones similares que tienen los parámetros en distinto orden o cuyo nombre tiene distinta raíz.

Mezcla de capas

Al poder embeber PHP dentro de nuestro HTML, resulta demasiado sencillo mezclar capas. A veces esta separación es necesaria para ayudarnos a no hacer cosas mal hechas.

Mezcla los conceptos de Array y Hash

En PHP, una hash y un array es lo mismo. Esto puede dar lugar a distintas situaciones caóticas.

Malos entornos de pruebas

La librería PHPUnit es la más extendida, pero tiene carencias importantes. No hay una buena librería de dobles de prueba.

Esta situación provoca que la mayor parte de las librerías que se pueden obtener no están convenientemente probadas y son propensas a errores.

Apenas usado fuera de la web

Sin embargo, es un lenguaje que apenas se usa fuera del entorno web.

Orientación a objetos

La orientación a objetos de PHP está metida con calzador. La propia API evita a toda costa la utilización de objetos.

Poco intuitivo

Si se te ocurren tres maneras de hacer las cosas, ninguna funcionará. Habrá otra rebuscada que será la buena.

Nombres mal escogidos

Veamos un ejemplo relacionado con DOMDocument. ¿Qué hace la función saveXML? Contrariamente a lo que el lector pueda pensar, no guarda nada. Tan solo devuelve la serialización del DOM (es decir, que es un toString, pero como la API no usa objetos…).

No tiene hilos

PHP no es multihilo. A menudo esto se simula mediante procesos, lo que es más lento y tiene problemas para compartir datos.

Conclusión

Aunque me ha costado encontrar razones por las que PHP mola, resulta tremendamente sencillo encontrar razones por las que no mola (hay muchas páginas que lo demuestran, como PHP: a fractal of bad design, que no tiene desperdicio). Sin embargo, es uno de los lenguajes más utilizados hoy en día, ¿cómo es posible?

La razón es muy sencilla: “Protoduction”, es decir, un prototipo que termina en producción (sacado de ‘Yoda Conditions’, ‘Pokémon Exception Handling’ and other programming classics).

Hoy en día hay fabulosos frameworks de desarrollo en PHP: symfony, kohana, CodeIgniter, CakePHP, Zend,… . Sin embargo, todos ellos requieren una gran pericia por parte del desarrollador para no terminar mezclando capas o creando un agujero de seguridad.

La gran ventaja de PHP sigue siendo la misma que hace años: sencillez de despliegue de la aplicación. ¿Su peor defecto? Lo sencillo que resulta crear un sitio inseguro.