Pregunta

Estoy trabajando en código re-factorización de una parte del archivo de configuración de carga en PHP. Más temprano que estaba usando varios archivos ini '', pero ahora tengo la intención de ir a por un solo archivo XML que se recojan todos los datos de configuración del proyecto. El problema es que, si alguien quiere archivo de configuración en ini o base de datos o cualquier otra cosa y no el valor predeterminado (en este caso XML), el código debe manejar esa parte.

Si alguien quiere ir a otra opción de configuración como ini, tendrá que crear el archivo INI similar a mi archivo de configuración XML y mi administrador de configuración debe tener cuidado de todo, como el análisis, el almacenamiento en caché. Para que necesito un mecanismo digamos interfaz adecuada para mis datos de configuración en el almacén de datos subyacente puede ser cualquier cosa (XML, DB, ini, etc) también yo no quiero que sea dependiente de estos almacén subyacente y en cualquier momento en el futuro esto debe ser extensible a otros formatos de archivo.

¿Fue útil?

Solución

Si se asume que está queriendo utilizar una clase para manejar todo esto, usted tiene 3 opciones:

  1. Tener una clase base llamada algo así como, ReadConfigurationBase luego 3 clases de implementación, ReadConfigurationXML, ReadConfigurationINI y ReadConfigurationDatabase y que tendría que elegir el más adecuado
  2. Igual que el anterior, pero utilizando una fábrica para elegir, con sede fuera de algo que se ha pasado. Al igual que si se pasa config.xml sabría volver ReadConfigurationBase implementado usando ReadConfigurationXML
  3. Tener una clase llamada ReadConfiguration y actúa como el paso 2, pero crea, contiene, y posee, las otras 3 clases.

Las 3 clases de base no serían simplemente saber leer ese tipo de archivo de configuración, y pasar la información detrás de una manera genérica. piensa en la línea de una interfaz:. Usted sabe que puede obtener los datos, pero no se preocupan de cómo

Me gustaría sugerir la opción 3, ya que haría la vida más fácil. Usted tiene que hacer un poco de modificación cada vez que desee agregar un método de almacenamiento, pero eso no sería más que la adición de un poco en la clase ReadConfiguration.

Hay camino que podría hacer que el 100% dinámico, pero que podría complicar las cosas, y no creo que realmente se necesita para esto.

Otros consejos

Tener un vistazo a Zend_Config . Proporciona adaptadores para Arrays, XML y Inis. Al igual que todos los componentes de Zend Framework, que puede ser utilizado aislado del marco restante. Incluso si usted no desea utilizarlo, es bien diseñado y es posible obtener algunas ideas para su propio gestor de configuración de la misma.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top