Construcción de una librería para generación automática de clases PHP basada en patrones de diseño utilizando PSP - Torres Morales, José Luis (2016)
Parte del desarrollo orientado a objetos es la generación de clases que mapeen de las entidades existentes en la base de datos. Esta es una práctica ampliamente difundida en varios lenguajes, como JAVA y PHP. Aunque el trabajo de realizar estas clases a mano se vuelve tedioso y agotador. Sin embargo, en ciertos lenguajes como en JAVA, existen herramientas para la generación automática de este tipo de clases. La creación automática de las clases que se mapean de la base de datos, ayuda a prevenir errores de sintaxis por fallo humano, así como los errores de nombrado y además mejora la estandarización del código, puesto que al generarse automáticamente se obliga a que el código cumpla con los estándares requeridos para el caso. El mapeo de entidades de la base de datos hacia clases es la base fundamental para la aplicación posterior de herramientas de programación orientada a objetos como el mapeo relacional de objetos, ORM por sus siglas en inglés. En este modelo, a partir de clases entidad se llega a establecer la relación entre los objetos mapeados y se puede implementar de manera natural el obtención de información tal como se hace dentro de las bases de datos relacionales a través de lenguaje de manipulación de datos como SQL. De esta forma se delega el manejo de integridad de datos (de entidad y referencial)1 al ORM y el desarrollo se vuelve más limpio y enfocado a implementar reglas de negocio y no a soportar y validar consistencia de datos. Por lo tanto, es comprensible que se necesiten herramientas similares en otros lenguajes de programación, como lo es PHP, que actualmente poseen limitadas herramientas para la generación de clases que reflejan las entidades de la base de datos que serán usadas en la aplicación. Hay que considerar, que los artefactos que se generen deben cumplir con las mejores prácticas del desarrollo de software. Se debe conseguir un diseño robusto y extensible, capaz de soportar altas cargas de trabajo con buen desempeño y con la flexibilidad suficiente para que la librería pueda adaptarse a las necesidades del proyecto en el que sea utilizada. La forma más conveniente de conseguir estas características es mediante la utilización de patrones de diseño y metodologías de desarrollo probadas y eficaces. Para este caso en particular resulta casi instintivo el uso de patrones constructores como “Abstract Factory”.