Gestion fichier de configuration

Contenu du snippet

Classe permettant de manipuler facilement des fichiers php contenant une liste de définition de variables (un fichier de configuration mysql par exemple).
Sert à changer les valeurs de ces variables du fichier, par l'intermédiaire de php.
Marche avec les tableaux multidimensionels.

Source / Exemple :


<?php
//----------------------------------------//
// config_file.class.php
// Classe abstraite de gestion d'un fichier de config
//----------------------------------------//
// Auteur : winzou
// Date de creation : 25/10/04
// Date de derniere modification : 26/10/04
//----------------------------------------//

class config_file
{

/*

  • LOAD
  • ==================
  • Retourne un tableau contenant les variables du fichier
  • ==================
  • (array) load( (string)$file )
  • /
function load($file) { if(!file_exists($file)) {return false;} else { $vars = get_defined_vars(); require($file); $vars2 = get_defined_vars(); $vars_file = array_diff_assoc($vars2,$vars); unset($vars_file['vars']); return $vars_file; } } /*
  • LOAD_INI
  • ==================
  • Retourne un tableau contenant les variables du fichier ini
  • ==================
  • (array) load_ini( (string)$file )
  • /
function load_ini($file) { if(!file_exists($file)) {return false;} return parse_ini_file($file,true); } /*
  • SAVE
  • ==============
  • Enregistre un tableau associatif dans le fichier de config en ecransant
  • ==============
  • (bool) save( (array)$vars, (string)$file )
  • /
function save($vars,$file) { $data = ''; if($fp = fopen($file,'w+')) { foreach($vars as $k=>$v) {$data .= '$'.$k.' = '.var_export($v,true).";\r\n";} fputs($fp,"<?php\r\n# Fichier de configuration gere avec la classe\r\n\r\n\r\n".$data."\r\n\r\n?>"); fclose($fp); return true; } else {return false;} } /*
  • SAVE_INI
  • ==============
  • Enregistre un tableau associatif dans le fichier ini en ecransant
  • ==============
  • (bool) save_ini( (array)$vars, (string)$file )
  • /
function save_ini($vars,$file) { $data = ''; if($fp = fopen($file,'w+')) { foreach($vars as $k=>$v) { $data .= '['.$k."]\r\n"; foreach($v as $k2=>$v2) {$data .= $k2.'='.$v2.";\r\n";} $data .= "\r\n\r\n"; } fputs($fp,"; Fichier de configuration gere avec la classe\r\n\r\n\r\n".$data); fclose($fp); return true; } else {return false;} } } // end class ?>

Conclusion :


Il parait que la fonctin parse_ini_file() a des ratés. Il faudra que je retrouve ou que je refasse la fonction moi même.

Exemple avec un fichier de conf de mysql (conf_mysql.php) contenant :
$host = 'localhost';
$user = 'winzou';
$pass = 'monpass';

Voici comment changer la valeur de $host :

require('config_file.class.php');
// on charge le fichier :
$conf = config_file::load('conf_mysql.php');
// on change la valeur de host :
$conf['host'] = 'autre_host.net';
// on sauvegarde sous le même nom :
config_file::save($conf,'conf_mysql.php');

Et pareil avec les .ini ;)

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.