Gestion fichier de configuration

Soyez le premier à donner votre avis sur cette source.

Snippet vu 5 156 fois - Téléchargée 32 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

Messages postés
5
Date d'inscription
jeudi 26 juin 2003
Statut
Membre
Dernière intervention
23 juin 2005

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 ...
Messages postés
167
Date d'inscription
lundi 17 janvier 2005
Statut
Membre
Dernière intervention
8 avril 2007
1
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.
Messages postés
20
Date d'inscription
jeudi 20 mars 2003
Statut
Membre
Dernière intervention
11 janvier 2006

pareil + 1, vraiment nikel ce code, beau boulot
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
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.