begin process at 2012 02 13 03:12:38
  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 :4 101

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

Et pareil avec les .ini ;)


 Sources du même auteur

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

 Sources de la même categorie

CLASSE DE GESTION DE "VARIABLES GLOBALES D'ENVIRONNEMENT" par pifou25
Source avec Zip COLLECTION.CLASS.MIN.PHP par thunderhunter
Source avec Zip SIMPLETEMPLATE par thunderhunter
Source avec Zip Source avec une capture VOIR QUI VISITE VOTRE SITE par Dariumis
Source avec Zip CLASS SIMPLE CBASEDONNEE par smag42

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

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

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 : 1,638 sec (4)

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