Retomando PHP tras una larga temporada
Pues sí, tras más de dos años sin trabajar con PHP he vuelto a él. En este tiempo he hecho alguna cosilla en PHP pero principalmente he estado trabajando con otras tecnologías como Java y .NET. No hay ningún motivo especial en ello, simplemente que los derroteros de la vida me han llevado hacia un entorno distinto al de la web, por lo que únicamente he utilizado PHP para mantener este blog y para algunos scripts de mantenimiento y pequeñas utilidades.
Conocí PHP allá por el fin de siglo pasado, cuando todavía se utilizaba PHP3 y comenzaba a oirse a hablar de PHP4. Desde el principio fue un lenguaje que me encantó por su sencillez, la cantidad de funciones y librerías incluidas y la facilidad que ofrecía para hacer aplicaciones web. Sin embargo conforme lo usaba para afrontar proyectos cada vez más grandes se hacían patentes algunas de sus carencias, centradas principalmente en la tendencia a realizar código spaghetti o mezclar la lógica y la presentación, lo cual hacía que las aplicaciones se volvieran inabordables e inmantenibles.
La solución a esto pasó por utilizar las caracteristicas propias del paradigma de Orientación a Objetos. Aunque no se puede considerar a PHP4 como un lenguaje orientado a objetos, sí que tiene algunas características basadas en este tipo de lenguajes. Ya hace un par de años publiqué un extenso artículo de tres páginas en las que detallaba muchas de estas características y sus peculiaridades, como el funcionamiento de las referencias, el paso de parámetros, la ocultación de miembros, la sobrecarga, los construtores y la serialización y deserialización de objetos.
La verdad es que pese a algunas carencias importantes, pude usar PHP4 para construir código bien estructurado y mantenible, saparar la lógica y la presentación, reutilizar código, y todo ello sin reducir la eficiencia de las aplicaciones sino incluso mejorándola gracias a la utilización de cachés, por ejemplo.
En este regreso a PHP he dejado atrás PHP4 y he aterrizado en PHP5, una versión que pese a disponer de importantes mejoras en diferentes campos como el de la orientación a objetos, ha chocado durante años con la realidad de que existen multitud de proyectos realizados en PHP4 que funcionaban correctamente, por lo que ha costado mucho (y sigue costando) que tanto empresas desarrolladores como proveedores de hosting lo oferten como estándar.
Tras unos pocos días con PHP5 hay que reconocer que es mucho más sencillo desarrollar con orientación a objetos que con PHP4, en el que debías estar muy atento a lo que hacías. Ahora se disponen de namespaces, mecanismos de ocultación (public, protected, private), clases abstractas e interfaces, excepciones, etc. Es muy útil también la opción de utilizar autoload de clases, de forma que no es necesario incluir el archivo con el código explícitamente, sino que cuando se utiliza por primera vez una clase se llama a una función especial en la que se puede realizar su carga, por ejemplo utilizando un cargador de clases. Tampoco es necesario utilizar ya las referencias al crear instancias o pasarlas por parámetros a funciones, lo que simplifica sobremanera el desarrollo y la depuración.
Merece también la pena mencionar otras dos características importantes, como el Type Hinting, que permite forzar a que los parámetros de las funciones sean de determinados tipos, y las capacidades de Reflection que permiten obtener en tiempo de ejecución todo tipo de información sobre instancias, clases, métodos, etc.
Sin embargo considero que hay un par de cosas que no están a la altura del resto. La primera de ellas es la comparación de objetos que sigue basándose en los símbolos ==
para comparar los datos de los objetos y ===
para compara si se tratan de la misma instancia. Considero que habría sido más conveniente utilizar ==
para comparar instancias y utilizar un método específico de las clases, por ejemplo __equal
para comparar los datos, de forma similar a como se hace en otros lenguajes. La segunda cosa que no me ha gustado como está resuelta es el tema de la sobrecarga. PHP dispone de un mecanismo básico de conseguir sobrecarga utilizando parámetros opcionales, pero es algo muy limitado. La opción que ofrece PHP5 se basa en la utilización de un método especial __call
que se llama automáticamente al llamar a un método inexistente de la clase. De esta forma se puede utilizar este método para realizar sobrecarga aunque distando mucho de ser una solución elegante.
Los comentarios están cerrados.