Hace tiempo, comenté acerca del desarrollo web en plataformas como Java, PHP, Erlang, Python... en ese momento, veía la maraña en la que está tejida la red de redes, el abanico de posibilidades a la hora de desarrollar una aplicación web y comenzaban a sonar términos como CRUD, SOA, MVC, ActiveRecord, Scaffolding...
Es una verdad que cada entorno, en cada lenguaje, ha ido implementando una serie de características que facilitasen y acelerasen la creación de entornos web, de toda índole, en poco tiempo y, una vez aislada la idea base, dado un nombre e incluso un acrónimo de tres letras (como el buen Jargon file manda :-) ), se convierte en un concepto de estudio e implementación en el resto de lenguajes.
A este respecto, PHP ha sufrido una desaceleración en innovación. La cantidad de estas características que pululan entre el resto de lenguajes, que la mayoría los orientan a objetos, quedan en imposibilidad de implementación, o en una implementación algo sucia, cuando se hacen en PHP, debido a su, aún, pobre implementación de orientación a objetos.
No obstante, en PHP se pueden identificar buenos entornos de trabajo que hacen, o en los que se pueden emplear y usar todos estos conceptos, como son Code Igniter o Simfony.
Algunos conceptos a tener en cuenta y que no se nos olviden, como buenas prácticas para el desarrollo de sitios web son:
- CRUD: create, retrieve, update y delete; es usado como sistema base para gestión de la información, con las cuatro tareas básicas que se suelen hacer sobre cada entidad de base de datos típica.
- SOA: arquitectura orientada al servicio; es una forma de diseñar nuestras aplicaciones de forma que se tenga presente siempre el nivel de aplicación, el servicio que se va a prestar.
- MVC: modelo-vista-controlador; es una separación lógica de las aplicaciones en lógica de negocio (modelo), presentación o vista, y controlador del flujo de ejecución.
- ActiveRecord: es una forma de aislar la sintaxis SQL del programa base. Intenta emular al sistema que se usaría con un sistema de base de datos orientado a objetos, pero a través del mapeado de las tablas con los atributos de las clases.
- Scaffolding: realiza, automáticamente, el paso de tablas de base de datos a CRUD y/o ActiveRecord. Es un sistema que intenta automatizar, lo máximo posible, la generación de entornos simples de metodología CRUD.
- Rutas: es la forma en que las aplicaciones web pueden hacer uso de la llamada a un método específico con unos parámetros específicos y de una forma elegante, a través de un sistema tipo ruta en la URL.
- AJAX: el uso de AJAX para agregar dinamismo a la web es un factor del que no se debe de abusar, pero que se debe tener en cuenta, ya que hace que la carga de páginas se reduzca de forma drástica.
En poco tiempo, supongo y espero, haré esta lista algo más grande, porque sé que se me olvidan más conceptos, pero de momento, así se queda :-P