Gestion d'un fichier de configuration

Soyez le premier à donner votre avis sur cette source.

Snippet vu 10 420 fois - Téléchargée 28 fois

Contenu du snippet

Ce code tiré d'une source de winzou (http://www.phpcs.com/code.aspx?id=29179) permet de gérer un fichier de configuration *.ini

Source / Exemple :


<?php

////////////////////////////////////
// config.php //////////////////////
////////////////////////////////////
// Auteur : Roots                 //
// Date de création : 06/07/05    //
// Commentaire :                  //
//     Tirée et améliorer d'une   //
//     source de Winzou           //
////////////////////////////////////

/*
	CLASSE DE GESTION D'UN FICHIER DE CONFIGURATION

  • /
/* la méthode config() est le constructeur de la classe : -> il appelle la fonction load_ini() -> il passe en variable globale toutes les clefs trouvé dans le fichier ini la méthode load_ini() charge le fichier $fichier et le parse et l'envoi dans le tableau $config la méthode modif_ini($categ,$cle,$value) permet de modifier ou de créer une clef dans le fichier $fichier la méthode sup_ini($categ,$value) permet de supprimer une clef dans le fichier $fichier la méthode save_ini() sauvegarde dans le fichier $fichier toutes les modifications
  • /
class config { var $fichier = 'config.ini'; var $config; //Constructeur function config() { $this->config = $this->load_ini(); reset($this->config); while(list($cle,$valeur) = each ($this->config)) { if(count($valeur)>=1) { while(list($cle2,$valeur2) = each ($this->config[$cle])) { $GLOBALS[$cle2]=$valeur2; } } else { $GLOBALS[$cle]=$value; } } } //Charge le fichier de config et le parse function load_ini() { if(!file_exists($this->fichier)) { return true; } $this->config = parse_ini_file($this->fichier, true); return $this->config; } //Modifie un parametre function modif_ini($categ,$cle,$value) { $this->config[$categ][$cle]=$value; $this->save_ini(); } //Supprime un parametre function sup_ini($categ,$cle) { unset($this->config[$categ][$cle]); $this->save_ini(); } //Enregistre le changement de parametre function save_ini() { $data = ''; if(file_exists($this->fichier)) { unlink($this->fichier); } if($fp = fopen($this->fichier,'w+')) { foreach($this->config 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 config()\r\n\r\n\r\n'.$data); fclose($fp); return true; } else { return false; } } } ?>

Conclusion :


Pas de bug connu pour le moment, si vous en trouvez n'hésitez pas à m'en faire part ^^

Merci

A voir également

Ajouter un commentaire

Commentaires

Messages postés
60
Date d'inscription
mercredi 18 décembre 2002
Statut
Membre
Dernière intervention
3 octobre 2006

Ouaaah! Je suis un peu dépassé par vos commentaires, je ne comprend pas tout ^^ Je crois que j'ai encore du chemin à faire avant de pouvoir poster de nouvelles sources ^^

Et pour la classe de Winzou si je l'ai modifiée c'est parce que je n'arrivais pas à la faire fonctionner : je suis pas très doué...
Messages postés
30
Date d'inscription
dimanche 13 juin 2004
Statut
Membre
Dernière intervention
12 décembre 2005

Pour les globals, il vaut mieux les éviter tant que l'on en maitrise pas bien php, par simple précaution car sa ouvre des failles de sécurité, donc comme tu te dis débutant évite et met toi en off.
De plus je dirais que l'utilisation du .ini est loin d'être indispensable, pour la simplicité de modification et de lecture, un bon vieux conf.php bien organisé fait largement l'affaire, uen variable par ligne et un commmentaire par variable histoire de préciser à quoi elles sert et c'est partit, pour modifier par l'intermédiaire tu as la class de winzou que tu peut très facilement mettre en full functions pour plus de rapidité qui fait l'argement l'affaire, mais il faut rajouter une fonction pour gérer les bool (true et false).
Messages postés
455
Date d'inscription
mardi 17 septembre 2002
Statut
Membre
Dernière intervention
22 juillet 2007

Bah moi c'était pas une question, c'est juste pour te prévenir que les globals sont pas activées sur tous les hébergeurs, donc ton code n'est pas portable... En plus, avec PHP 5, l'utilisation des globals devient de plus en plus déconseillée !
Essaye donc de trouver un autre système plus portable et moins obsolète ;)
Messages postés
60
Date d'inscription
mercredi 18 décembre 2002
Statut
Membre
Dernière intervention
3 octobre 2006

Alors je suis débutant donc je n'ai surement pas opté pour la meilleure solution mais je vais essayer de vous répondre : si j'ai décidé de passer au fichier de configuration sous forme de *.ini c'est pour pouvoir facielement lire et modifier le fichier de configuration par exemple depuis l'administration de mon site. Ensuit par rapport aux variables globals ça me permet de les récuperer dans mes classes ^^

Mais si vous avez de meilleures solutions à me proposer je suis preneur!

Merci
Messages postés
2215
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
16 juillet 2009

Pourquoi tu fais pas un fichier de configuration avec par exemple dans le fichier :
$variable_de_conf = 'valeur';
.... etc

Et après un include en haut de chaque page ?? c'est pas plus simple ? ou alors j'ai mal compris le but de ta source.
Afficher les 6 commentaires

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.