php - tiene - mejor formato de imagen calidad
¿Cuál es el mejor formato de archivo para archivos de configuración? (5)
Estoy creando un marco en PHP y necesito tener algunos archivos de configuración. Algunos de estos archivos inevitablemente tendrán una gran cantidad de entradas.
¿Qué formato sería el mejor para estos archivos de configuración?
Aquí está mi cuantificación de lo mejor:
- Fácilmente analizado por PHP. Sería bueno si no tuviera que escribir ningún código de análisis, pero esto no es un factor decisivo.
- Sigue siendo fácilmente leído por humanos incluso cuando hay una gran cantidad de entradas
- Es un estándar ampliamente utilizado, sin formatos personalizados
- La sucinctitud es apreciada
Comencé a usar XML, pero rápidamente me rendí por razones obvias. He pensado en JSON y YAML, pero quería ver qué más hay por ahí.
¿Por qué no usas un archivo PHP para la configuración?
Los beneficios son claros:
- posibles errores serán atrapados automáticamente
- no es necesario usar / crear un analizador personalizado
- es ampliamente entendido por los programadores de PHP
- puede tener alguna lógica personalizada, por ejemplo, usando configuraciones personalizadas para desarrollo, otras para producción, etc.
Otros frameworks como Django y Rails usan un archivo de configuración que es un script.
¿Qué tal un formato de archivo INI? Es un estándar de archivo de configuración de facto, y PHP tiene un analizador incorporado para ese formato:
YAML es una buena opción: http://www.yaml.org/
Es muy simple y poderoso, también
Los proyectos de Ruby lo usan mucho para la configuración.
Otra opción sería usar JSON y usar json_encode
y json_decode
.
Podrías usar estructuras de datos más ricas en tus parámetros de configuración.
Personly me gusta hacer datos de configuración en una clase.
class appNameConfig {
var $dbHost = ''localhost'';
var $dbUser = ''root'';
//...
}
entonces para usarlos todo lo que tienes que hacer es
$config = new appNameConfig;
mysql_connect($config->dbHost, $config->dbUser, $config->dbPassword) or die(/*...*/);
para cambiar la configuración, todo lo que tienes que hacer es leer el archivo con la clase en él. Utilizo una función como esta:
function updateConfig($parameter, $value) {
$fh = fopen(''config.php'', ''w+'');
while(!feof($fh)) {
$file .= fgets($fh);
}
$fileLines = explode("/n", $file);
for($i=0;$i<count($fileLines);$i++) {
if(strstr($fileLines[$i], $parameter)) {
$fileLines[$i] = "$" . $parameter . " = ''" . $value . "''";
}
}
$file = implode("/n", $fileLines);
fwrite($fh, $file);
fclose($fh);
}