begin process at 2010 02 10 07:13:19
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Class et Objet ( POO )

 > GESTION FICHIER DE CONFIGURATION

GESTION FICHIER DE CONFIGURATION


 Information sur la source

Note :
10 / 10 - par 2 personnes
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Class et Objet ( POO ) Niveau :Initié Date de création :29/01/2005 Vu :3 422

Auteur : winzou

Ecrire un message privé
Site perso
Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note

 Description

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

  • <?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
  • ?>
<?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');

E t pareil avec les .ini ;)


 Sources du même auteur

STRTOTIME ÉTENDU (STR2TIME)
COULEUR ALÉATOIRE HTML (HEXADECIMAL)

 Sources de la même categorie

Source avec Zip POO - LOGGING PACKAGE par Waredan
POO - OBJECT CLASS par Waredan
Source avec Zip POO - FACTORY CLASS par Waredan
POO - SINGLETON CLASS par Waredan
POO - PARAMETERHOLDER CLASS par Waredan

Commentaires et avis

Commentaire de Anthomicro le 29/01/2005 22:49:11

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 ++

Commentaire de legaulois le 30/01/2005 12:13:08

pareil + 1, vraiment nikel ce code, beau boulot

Commentaire de eXon le 31/01/2005 14:10:25

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.

Commentaire de dansap le 23/06/2005 10:05:46

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 ...

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,842 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales