begin process at 2012 05 27 21:40:03
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Class et Objet ( POO )

 > GESTION D'UN FICHIER DE CONFIGURATION

GESTION D'UN FICHIER DE CONFIGURATION


 Information sur la source

 Description

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

  • <?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;
  • }
  • }
  • }
  • ?>
<?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


 Sources de la même categorie

Source avec Zip GÉNÉRATION AUTOMATIQUE DE FICHIER .CLASS.PHP EN FONCTION D'U... par ig3
CLASSE D'OBJET DE CRYPTAGE ET DÉCRYPTAGE DE CHAINES DE CARAC... par 8Tnerolf8
Source avec Zip MY.DEVIANTART API par inwebo
CLASSE DE GESTION DE "VARIABLES GLOBALES D'ENVIRONNEMENT" par pifou25
Source avec Zip COLLECTION.CLASS.MIN.PHP par thunderhunter

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture LISTE REPERTOIRE (DIR EN PHP) par mephistope
Source avec Zip ESPACE D'ADMINISTRATION POUR VOTRE SITE INTERNET par Vyk12
Source avec Zip [PHP5] CLASSE POUR GESTION MULTILANGUES par Epoc22
CLASSE DE CONFIGURATION POUR LA GESTION D'ERREUR par FredT
Source avec Zip CLASSE COMPLÈTE DE GESTION DES FICHIERS DE CONFIGURATION INI... par LocalStone

Commentaires et avis

Commentaire de Naixn le 07/07/2005 00:50:05

Oh, bah tiens, j'ai register_globals à OFF et ça marche pas :)

Commentaire de MadM@tt le 07/07/2005 10:50:27

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.

Commentaire de pablor44 le 07/07/2005 11:08:01

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

Commentaire de Naixn le 07/07/2005 11:47:11

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

Commentaire de the_angel le 22/08/2005 23:51:32

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

Commentaire de pablor44 le 23/08/2005 11:43:34

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

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Gestion de fichier [ par casper_2 ] Bonjour je debute en PHP,et je voudrais tout dabord savoit sil faut un compilateur,ou carement utiliser NOTEPAD ++.Deplus,j'essaye de comprendre la ge Fichier php.ini [ par slog9 ] Slt! jvoudrai juste savoir ce quZest le fichier php.ini, a quoi il sert et comment on peut le configurer. Merci. Gestion telechargement association fichier [ par esquale ] Bonjour,J'ai dans un dossier des images et des fichier .exe, les images etant des captures des .exeJe voudrais savoir comment faire pour associer dire php.ini et sous-dossiers [ par Florynth ] Bonjour,je viens de changé d'hébergeur et au lieu de ce servir de .htaccess il se sert des php.ini...Petit problème que j'ai rencontré la config du fi configuration php.ini pour mail [ par dam_37 ] Avis &#224; tous ceux qui savent,Malgr&#233; le nombre important d'infos sur l'envoi de mail, j'ai toujours le m&#234;me probl&#232;me:Ma fonction mai probleme fopen + plantage... au secours !!! [ par xen16 ] Bonjour &#224; tous,&nbsp;J'ai un souci sur une ouverture de fichier sur serveur, voici mon probleme :&nbsp;&nbsp;&nbsp;&nbsp;Je veux stocker les cara Curl [ par eln_francois ] Bonjour,je désire installe CURL, mais lorsque j'active selui si dans le fichier php.ini il ne s'active pas.... j'ai pourtant tester avec les deux fich Rajouter une ligne dans une section d'un fichier .ini [ par CokeInMyNose ] Bonjour à tous, voila j'ai un projet à faire qui resemble à ceci: Un porte-document numérique est un espace web sur lequel on peut stocker et partage Gestion fichier des utilisateurs [ par nemo_1 ] Bonjour deja a toute la comunaute,Je m'excuse d'avance si la question a ete deja pose.Je l'explique il parait tres simple mais meme avec le principe j Gestion de log [ par citt ] Bonjour, Je souhaite mettre en place une gestion de log sur mon site, cette gestion permettrai de savoir qui fait quoi et ou. J'ai développer une cl


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
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,328 sec (4)

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