Gestion fichier de configuration

5/5 (4 avis)

Snippet vu 5 442 fois - Téléchargée 34 fois

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

Ajouter un commentaire Commentaires
dansap Messages postés 5 Date d'inscription jeudi 26 juin 2003 Statut Membre Dernière intervention 23 juin 2005
23 juin 2005 à 10:05
J'ai vu un p'tit problème dans load_ini : cette fonction n'enlève pas les cotes. A chaque modification on se retrouve avec un niveau de cotes supplémentaires.

ça fait :

au debut : 'toto'
modif 1 : ''toto''
modif 2 : '''toto'''
etc ...
cs_eXon Messages postés 166 Date d'inscription lundi 17 janvier 2005 Statut Membre Dernière intervention 8 avril 2007 1
31 janv. 2005 à 14:10
Vraiment excellent. Par contre, la variable $file me semble que à ta place je crérais une variable dans ta classe au lieu de la demander à chaque fonction.
cs_legaulois Messages postés 20 Date d'inscription jeudi 20 mars 2003 Statut Membre Dernière intervention 11 janvier 2006
30 janv. 2005 à 12:13
pareil + 1, vraiment nikel ce code, beau boulot
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 9
29 janv. 2005 à 22:49
Salut ;-)

C'est beau, c'est propre, 10/10

Une piste à creuser pour remplacer des valeurs : expressions régulières (tu ouvres ton fichier dans une variable, tu fais un preg_replace et hop tu sauvegardes). J'ai fait ça pour un de mes sites et c'est pas mal.

a ++

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.