Pregunta

Estoy escribiendo una aplicación PHP que tendrá la posibilidad de editar la configuración a través de una interfaz web. No era mi intención para el usuario (y, de hecho, sólo será los administradores ) para poder cargar el archivo en un editor de texto, sino más bien, que hacer un cambio mediante un formulario, y que va a cambiar el archivo de configuración (y hacer otras cosas también ).

En esta etapa en el desarrollo, los ajustes se almacenan en un archivo PHP, por ejemplo:

define ('UPLOAD_DIR','uploads/');
define ('DISPLAY_NUM',true);
$names = array('a' => 'b','c'=>'d','e'=>'f');

Sin embargo, al analizar las matrices (y ellos se ponen más complicadas (es decir multinivel anidada) de los anteriores), no parece tan divertido. Y debido a que los ajustes específicos pueden ser añadidos o borrados, leer todo el archivo y, a continuación, escribir a cabo todos los ajustes de nuevo, no parece diversión tampoco.

¿Cuáles son las ventajas y desventajas de utilizar los siguientes formatos? (Y cualquier otro que pasé por alto):

  • XML personalizado
  • INI (capaz de utilizar parse_ini_file)

(El uso de una base de datos no adecuada, debido a los requisitos para el proyecto. Entiendo que, en muchas situaciones una base de datos sería su preferencia, pero no en este caso.)

Si no fueron capaces de utilizar una base de datos, y tuvo que almacenar la configuración que podría ser editadas utilizando una interfaz web, ¿qué harías?

(Nota: Esta es una pregunta diferente a éste , donde los ajustes no se pueden cambiar, es archivo PHP todo el camino. Y sí, la configuración de la cuenta en la actualidad escribir un archivo PHP con la configuración correcta.)

¿Fue útil?

Solución 2

bien, no he tenido ningún tipo de respuesta que estaba buscando. Aquí está el tipo de cosas que yo esperaba.

INI

  • Almacenamiento de la configuración en un archivo INI puede ser apropiado para los ajustes simples que desea el usuario para editar manualmente.
  • No obstante, la creación de matrices complejas no es fácil, y requeriría algunas acrobacias mentales para entender qué partida es a qué nivel de la matriz.
  • Las palabras reservadas, que no deben utilizarse en cualquier parte del archivo, incluye: sí, no, verdadero y falso, esto podría ser problemático.
  • Las constantes se puede utilizar en el archivo.
  • No se construyó en el método de escribir archivos INI.

XML

  • puede utilizar la extensión SimpleXML, que "proporciona un conjunto de herramientas muy simples y fácilmente utilizable" para convertir XML en un objeto que luego puede ser procesado utilizando los métodos normales.
  • Permite el uso de matrices muy complejas.
  • Posibilidad de editar manualmente, si es necesario.
  • Puede utilizar herramientas externas para verificar la validez del archivo.
  • Muchas muchos procesadores XML disponibles para PHP.

YAML

Recuerde: ninguna base de datos. Requiere ser capaz de utilizar matrices complejas.

Otros consejos

Si usted no está comprometido con el uso de XML, es posible que desee considerar YAML . Yo sólo he utilizado con Ruby, pero una rápida Google sugiere que hay algunas opciones para el soporte de PHP. TBF, los enlaces no incluyen algunos href="http://www.techyouruniverse.com/software/dont-use-yaml-for-php-use-parse_ini_file" rel="nofollow argumentos contra usando YAML con PHP, pero tu caso es distinto.

No me gusta la idea de que alguien tenga acceso directo de los ajustes, por lo que es importante proporcionar una interfaz para actuar como un amortiguador, evitando los ataques deliberados y asegurar la producción limpia.

Con esto en mente la elección del formato del lado del servidor no es importante en absoluto, siempre y cuando se puede interactuar con ella correctamente todos los otros problemas se pueden resolver alrededor.

Me gustaría recomendar un archivo XML personalizado, de esa manera su configuración escalará bien y que puedo utilizar las bibliotecas de PHP XML para acceder a él.

Un ejemplo rápido:

<myconfig>
  <define>
    <name>UPLOAD_DIR</name>
    <value>uploads/</value>
  </define>
  <define>
    <name>DISPLAY_NUM</name>
    <value>true</value>
  </define>
  <array id="names">
    <value index="a">b</value>
    <value index="c">d</value>
    <value index="e">f</value>
  </array>
</myconfig>

PHP tiene funciones para editar y analizar archivos INI, que utilizan un formato de texto sin formato a la configuración del programa tienda.

He utilizado un enfoque de dos pasos. Las variables y sus nombres se almacenan en la base de datos con una interfaz que le da al usuario la posibilidad de cambiarlos. Cuando a cambiar un archivo se guarda en el servidor y, a continuación hace referencia throught la solicitud (Los cambios se guardan alos de nuevo a la base de datos). Hace que la actualización de las copias de seguridad fáciles y hace sencillo - no hay necesidad de copia de seguridad de los archivos, simplemente copia de seguridad de la base de datos. Los archivos resultantes son simplemente archivos .inc que están en el formato $ variableName = 'VariableValue';

Y por qué no php normal?

configure-form.php

forma method=POST action='configure.php',

ex campos de entrada. name='upload' value='<?php echo UPLOAD; ?>'

un archivo configure.php:

$myfile = 'sets.php';
$fh = fopen( $myfile, 'w' );
$upload = '"/upload/"';
$txt = "define( UPLOAD, '" . $_POST['upload'] . "' );";
fwrite( $fh, $txt );
fclose( $fh );

y ahí lo tienes. php simple que crea un archivo de configuración para usted.

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