Un cambio reciente que creo que merece la pena ser comentado aquí. Como sabes, una de mis obsesiones en Gesbit es tratar la base de datos con cuidado, e intentar hacer las menos consultas SQL posibles. Estoy escribiendo el "tutorial para desarrollar plugins", y, en el mismo trato de exponer (con mis diez duros de inglés) cómo es posible utilizar la base de datos para guardar opciones, sí, pero, también que existen una serie de posibilidades para evitar hacerlo, y, que es una buena idea evitarlo, dicho de otro modo, que es una mala idea lanzarse a poner opciones como loco en un plugin.
Los "desarrolladores de plugins" tienen ya varias alternativas que Gesbit proporciona para no tener que recurrir a la base de datos. Incluso teniendo que utilizarla, Gesbit proporciona también varias alternativas a los desarrolladores de plugins. Sin embargo, había algo que no estaba contemplado, y que no sólo no es una mala idea, sino es que muy buena, y lo prueba el que no se me haya ocurrido a mí. Efectivamente, en algunos otros proyectos he podido verlo, y ha sido cuestión de estar escribiendo sobre el asunto para caer en la cuenta de que podía implementar algo así también. ¿Pero de qué estoy hablando?
Como sabes, todas las clases PHP en Gesbit pueden acompañarse de archivos con "constantes para la clase". Las clases de Gesbit se "autocargan", y, si junto al archivo de una clase existe un archivo del mismo nombre pero con cierta extensión especial (.const.php), Gesbit también requiere dicho archivo, de modo que las constantes definidas en el mismo están disponibles para la clase que las necesite, e incluso en otros lugares de Gesbit. Por ejemplo, muchas constantes definidas en el archivo para constantes de la clase "GbInput" son utilizadas a lo largo y ancho de Gesbit, hasta ahora, con buenos resultados.
Pues bien, los plugins para Gesbit también pueden aprovecharse de esta característica, y de hecho así lo hacen, así que podían definir constantes, además de las que ya definen, pensadas para ser "rellenadas" por los usuarios del plugin, de modo que este pudiera comprobar si dichas constantes tienen o no un valor adecuado, y, en caso de que sea así, no utilizar la base de datos de la bitácora, sino ceñirse a dichas constantes "de configuración". Efectivamente, esto era posible, pero, como digo, los plugins ya usan el archivo de constantes para definir las que necesitan, y no he visto bien mezclar ambos tipos de constantes: las que usa el plugin y las de su posible configuración.
¿Solución? Considerando que la idea era buena, la solución ha venido sola: de la misma manera que las clases de plugins pueden incorporar un archivo para constantes, que será requerido por Gesbit incluso justo antes de requerir la propia clase del plugin, de esa misma manera, digo, ahora los plugins también pueden incluir junto a ellos un archivo de configuración, que habrá de tener el mismo nombre que el archivo de la clase y el de constantes, pero, con la extensión ".config.php". Este archivo de configuración puede mantenerse "claro", incluir "instrucciones", definir constantes, en fin, con vistas a que lo haga el usuario del plugin.
A continuación y como ya he dicho, si el plugin comprueba que la constante o constantes correspondientes tienen valores apropiados, el plugin puede usar dichas constantes, en lugar de recurrir a la base de datos. De hecho, llegado el caso, cuando el usuario quiera ver el formulario de opciones del plugin (puesto que las constantes de configuración pueden ser opcionales) el plugin podrá informar al usuario de que no es necesario dicho formulario, pues ya se han determinado las constantes de configuración oportunas y el plugin hará uso de ellas. Es tan buena idea que, por supuesto, todos los plugins para Gesbit que yo mismo desarrollo hacen uso de este nuevo archivo de configuración para plugins.
Piénsese en el valor de algo así cuando se usaran muchos plugins. Efectivamente, yo uso trece o catorce en mi bitácora, gestionada con Gesbit, esta misma bitácora usa también varios plugins, y no noto ningún problema, todo va bien, las consultas SQL no ralentizan nada, en definitiva, pudiera pensarse que el archivo de configuración para los plugins no es en absoluto necesario. Y así puede ser. Pero, también es una forma de "estar preparados". De poder hacer las cosas de otro modo. PIensa que ahora sería posible tener instalados 200 plugins sin que estos tocaran en absoluto la base de datos, sin que necesitan consultarla, en fin, intentando aprovechar lo más posible los recursos disponibles. Sí, tal vez no sea necesario, pero, no está mal contar con algo así.
¿No te parece? Y bueno, eso es todo lo que tenía que decir. Ah, bueno, también que sigo escribiendo la documentación de Gesbit, incluyendo algunos tutoriales. Voy avanzando, pero, es una tarea que requiere bastante dedicación. Por supuesto, a veces sale trabajo de ahí, puesto que mientras estás escribiendo sobre algo estás dándole vueltas y así puede ocurrírsete alguna cosa que no esté del todo mal. Ah, y otra cosa. El dominio gesbit.com ha estado "caído" el día de ayer y hoy, pero, como ves ya está todo en marcha de nuevo. Era cuestión de realizar la oportuna renovación, pero, este tipo de cambios por lo visto no son automáticos, sino que llevan su tiempo y no puede hacerse sino esperar. Y ahora sí eso es todo. Que tengas un buen día. :-)
PD. Quisiera añadir algo. Por supuesto, nada impedía a un plugin para Gesbit requerir el archivo de configuración correspondiente. Pero, el "estandarizar" esto, el hacer saber que existe esta forma de hacer las cosas, hacerlo además sencillo (Gesbit se encarga de requerir el archivo de configuración automáticamente) es lo que considero más o menos reseñable. El asunto está en enfocar a hacer las cosas de una determinada forma, y no por mero gusto, sino porque se considera que de cierta manera las cosas son mejor para todos: desarrolladores y usuarios deben salir ganando y esto debe quedar tan claro que no quepan excusas. Y bueno, ya me callo. :D