Por qué PHP mola
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.