Existen librerías indispensables en la construcción de un CMS. El modo en que las mismas se desarrollan significa una decisión importante para el desarrollador y, en consecuencia, un modo de evaluación de un CMS.

A continuación analizaremos alguna de estas librerías para los CMS en PHP.

Gestor de configuraciones

En principio, es casi una obviedad decir que las configuraciones de un programa deben almacenarse en un mismo lugar y separadas al resto del programa.

Ahora bien, los modos en que se almacenan y se recuperan las configuraciones son muy diversos. Las opciones más comunes de almacenado suelen ser en:

  1. base de datos
  2. archivos (.xml, .ini, etc)
  3. variables, arreglos, constantes.

Almacenarlas en una base de datos hace fácil la administración, algo similar, aunque un poco más trabajoso, ocurre con los archivos.

Por otro lado, las constantes son más seguras y fáciles de obtener. Las variables siempre están sujetas a ser modificadas y debe lidiarse con su ámbito.

Recuperar las configuraciones de una base de datos o de un archivo requiere de una función extra que ralentiza el proceso, lo mismo ocurre si a tal efecto  se utiliza una función o clase.

En mi opinión, en un CMS lo óptimo es utilizar constantes.

Manejo y registro de errores

PHP trae muchas funciones para el registro y seguimiento de errores, por tal motivo sólo hace falta encontrar un modo versátil de utilizarlas. También, habrá que abrir sus prestaciones a otros entornos, como los errores surgidos en la base de datos o en la lógica misma del CMS.

Enlaces externos: http://php.net/manual/es/book.errorfunc.php

Internacionalización del idioma

La internacionalización del CMS guarda en algún sentido similitudes con las configuraciones. Sin embargo, tiene particularidades que a mi criterio hacen diferente su resolución.

Tener constantes sigue siendo lo más rápido. De todos modos, me inclino por utilizar la librería gettext, un poco más pesada, pero con muchas prestaciones.

Sistema de gestión de base de datos

Lo primero que debe definirse es el o los gestores de la base de datos.

Un único gestor es más eficiente aunque limita el campo de posibilidades de utilización del CMS.

La opción a varios gestores se hace a través de una capa abstracta. Antiguamente se utilizaban capas abstractas propias, pero hoy en día PHP posee varias de muy alto rendimiento, siendo la más conocida PDO.

Otra decisión importante es la de utilizar funciones o métodos de un objeto. Si bien esto depende en partes del proveedor, las diferencias son considerables.

Enlaces externos: http://php.net/manual/es/refs.database.php

Sistema de usuarios y permisos 

Existen al menos 3 niveles de complejización de este sistema:

  1. reconocer un visitante como usuario del Sitio.
  2. otorgar permisos de publicación y/o administración.
  3. almacenar configuraciones y/o preferencias.

También puede ser bueno que el sistema permita el registro con cuentas de redes conocidas como facebook, hotmail o google.

Constructor de url

Un buen CMS debería contar con URL amigables y modos flexibles de reescribir las URLs.

Gestor del cache

Cachear las partes que no se actualizan del sitio permiten una optimización del mismo ahorrando en muchos casos enorme cantidad de recursos.

En realidad, buena parte de la página web es cacheable, como ser menues, publicaciones, etc.

Gestor de la arquitectura

Es común que los CMS requieran algún gestor de su arquitectura, sobre todo en los del tipo MVC.

 

Publicado originalmente en ArrollandoWeb el 24-nov-2014