Accueil > > > [PHP5] GESTIONNAIRE DE CONFIGURATIONS
[PHP5] GESTIONNAIRE DE CONFIGURATIONS
Information sur la source
Description
Salut, Comme les sources trouvées ici ne me convenaient pas, j'ai fait la mienne. Il s'agit d'un gestionnaire de configurations simples, constituées de simples paires clé/valeur. Il est composé d'une classe abstraite qui gère l'accès aux valeurs de la configuration, et de classes concrètes dérivées qui gèrent l'accès aux données (fichier XML, base de données, fichier .ini, etc). Voici le code :
Source
<?php
/**
* Project : Configuration File Reader
* File : Config.class.php
*
* @author Neige < neige at orphyx dot net >
* @copyright © 2007 - Neige
* @package Configuration File Reader
* @version 1.0.0
* @link http://www.orphyx.net
* @licence http://creativecommons.org/licenses/by-nc-sa/2.0/fr/
*/
/**
* @package Configuration File Reader
*/
abstract class Config
{
/**
* Configuration Items
* @var array
*/
protected $_ConfigItems = array();
/**
* Read configuration file and store items
* @param string $file
*/
abstract protected function _load($file);
/**
* Factory : build the required object
* @param string $file File to load
* @param string $type Required class type
* @return object
*/
public static function getConfig($file, $type)
{
$classReq = 'Config_' . $type;
if(class_exists($classReq))
{
return new $classReq($file);
}
else
{
throw new Exception('CLASS_NOT_FOUND');
}
}
/**
* Class constructor
* Load configuration file
* @param string $file
*/
public function __construct($file)
{
$this -> _load($file);
}
/**
* Configuration items getter
* @param string $var
* @return string
*/
public final function __get($var)
{
if (array_key_exists($var, $this -> _ConfigItems))
{
return $this -> _ConfigItems[$var];
}
else
{
return FALSE;
}
}
/**
* Configuration items setter
* @param string $var
* @param mixed $value
*/
public final function __set($var, $value)
{
$this -> _ConfigItems[$var] = $value;
}
}
?>
<?php
/**
* Project : Configuration File Reader
* File : Config_MySQL.class.php
*
* @author Neige < neige at orphyx dot net >
* @copyright © 2007 - Neige
* @package Configuration File Reader
* @version 1.0.0
* @link http://www.orphyx.net
* @licence http://creativecommons.org/licenses/by-nc-sa/2.0/fr/
*/
/**
* @package Configuration File Reader
*/
class Config_MySQL extends Config
{
/**
* Fetch configuration table content
* Requires a MySQL connection to exist
* @param string $file The table name
*/
protected function _load($file)
{
if (!mysql_ping())
{
throw new Exception('NO_MYSQL_CONNECTION_FOUND');
}
$result = mysql_query('SELECT * FROM ' . $file);
while ($item = mysql_fetch_row($result))
{
$this -> _ConfigItems[$item[0]] = $item[1];
}
mysql_free_result($result);
}
}
?>
<?php
/**
* Project : Configuration File Reader
* File : Config_SimpleXML.class.php
*
* @author Neige < neige at orphyx dot net >
* @copyright © 2007 - Neige
* @package Configuration File Reader
* @version 1.0.0
* @link http://www.orphyx.net
* @licence http://creativecommons.org/licenses/by-nc-sa/2.0/fr/
*/
/**
* @package Configuration File Reader
*/
class Config_SimpleXML extends Config
{
/**
* Read Configuration file using SimpleXMLElement
* @param string $file
*/
protected function _load($file)
{
if (is_file($file))
{
$xml = simplexml_load_file($file);
}
else
{
throw new Exception('FILE_NOT_FOUND');
}
foreach ($xml as $item)
{
$this -> _ConfigItems[(string) $item -> name] = (string) $item -> value;
}
unset($xml);
}
}
?>
Conclusion
Pour l'heure, je n'ai fait que deux classes concrètes : XML (utilisation de SimpleXML) et MySQL. Pour le stockage en base de données, la classe nécessite que la connexion MySQL soit déjà faite et considère que le fichier à charger correspond à la table à lire, et que le premier champ est la clé, le deuxième la valeur (quelques soient leurs noms). La classe MySQL ne tient pas compte d'une éventuelle classe d'abstraction pour l'accès aux données (elle est tellement élémentaire que ce n'était pas vraiment justifié) : libre à chacun de la réécrire pour aller avec sa couche d'abstraction personnelle.
Exemples d'utilisations :
$page -> conf = Config::getConfig($config_file, 'SimpleXML'); if ($page -> conf -> active) { // code... }
$board -> conf = Config::getConfig('board_config', 'MySQL');
Petite précision : pour des raisons évidentes de sécurité, il est recommandé de ne pas stocker ses fichiers de configurations (surtout des .xml ou des .ini) dans un répertoire accessible depuis le net. Le mieux étant bien sûr de les stocker dans un répertoire situé en dehors de l'arborescence de publication, sinon, dans un répertoire protégé par .htaccess
Dernier point : je me suis creusé la tête pour limiter le nombre d'objets instanciés, finalement, j'ai pas réussi, on en a un par fichier de configuration... Donc question perfs, c'est peut-être pas au point, je prends toutes les idées qui pourront être données.
Historique
- 03 juin 2007 12:05:08 :
- Correction d'une faute de frappe
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
XML ou MySQL ?? [ par Garno ]
Salut,J'aimerais savoir s'il est plus rapide d'utilise le XML ou le MySQL pour conserver la configuration de mon site web. Comme je prévois beaucoup d
[PHP 5][DOM XML] Suppression du noeud courant [ par javajavajava ]
Bonjour, voici comment se présente mon fichier xml<?xml version="1.0" encoding="utf-8" ?> <menu><nbelements>5</nbelements> <
XML insérer un élément tout au dessus [ par Straw ]
Bonjour à tous, je pose cette question dans le cadre de mon mémoire... que je dois rendre dans 12jours Je développe un site flash-x
configuration [ par khaldounaouar ]
ma page (configurer le reseau.php contient (@ip,masque,DNS,et,deux boutons valider,Annuler)je veut faire une connexion entre le bouton valider et le f
configuration réseau [ par walidospikkos ]
salut à tous, j'ai conçu une interface avec php qui m'offre la possibilité de modifier l'IP, l'@ DNS et le masque de ma machine. mon in
Timeout flux XML [ par FhX ]
Bon, petit problème avec les flux XML récupéré via simpleXML en PHP5. Comment on défini un timeout sur ce machin ? Parce que j'ai beau essayer avec le
administration réseau sous linux via PHP [ par khaldounaouar ]
Salut tout le monde; bref j'ai conçu une page php "outil.php" dans le but d'administrer mon réseau(configuration des hôtes, serveurs...) qui doit fon
configuration réseau via php [ par khaldounaouar ]
salut tous le monde j'ai conçu une page .php que j'envisage configurer mon reseau local à travers je travaille avec php4 et apache le corps de ma p
générer un fichier XML à partir de mySQL [ par Migs ]
Bonjour, je voudrais savoir s'il est possible de créer un fichier XML directement à partir de mySQL par le biais de procédures stockées. Je ne souhait
Aide pour mon Parser XML [ par ddpetit ]
Bonjour à tous, je suis en train de me créer un parser xml pour un de mes sites, un problème subsiste, j'ai réussi à faire le parser en lui meme, mai
|
Derniers Blogs
VISUAL STUDIO TALK SHOW: EF4VISUAL STUDIO TALK SHOW: EF4 par Matthieu MEZIL
La semaine dernière, j'étais à Montréal pour y animer des conférences sur Entity Framework. J'en ai profité pour enregister un podcast Visual Studio Talk Show que vous pouvez retrouver ici ....(read more) ...
Cliquez pour lire la suite de l'article par Matthieu MEZIL [MIX 2010] - WINDOWS PHONE 7 EN SUPER STAR DU MICROSOFT MIX 2010 ![MIX 2010] - WINDOWS PHONE 7 EN SUPER STAR DU MICROSOFT MIX 2010 ! par redo
Me voici enfin arrivé au Microsoft Mix 2010, je dois vous avouer être arrivé un peu plus tard que d'habitude, ce qui explique que je n'ayez vu aucune info passer quant au premier keynote . certains événements sont plus importants que tout, ce qui était mo...
Cliquez pour lire la suite de l'article par redo [MIX 2010] - LIVRE GRATUIT SUR PROGRAMMER WINDOWS PHONE 7 SERIES ![MIX 2010] - LIVRE GRATUIT SUR PROGRAMMER WINDOWS PHONE 7 SERIES ! par redo
Disponible gratuitement : (153 pages) PDF Version : http://download.microsoft.com/download/7/C/8/7C820C6F-C205-4ECF-B9F3-1505DD13F9BF/ProgWinPhonePreview.pdf XPS Version : http://download.microsoft.com/download/E/3/5/E359FC51-1CF5-47F1-9BF3-74AB09D3339B/P...
Cliquez pour lire la suite de l'article par redo SQL SERVER : ESTIMER LE NOMBRE DE LIGNES RENVOYéES PAR UNE REQUêTE AVEC SQLCLRSQL SERVER : ESTIMER LE NOMBRE DE LIGNES RENVOYéES PAR UNE REQUêTE AVEC SQLCLR par christian
Dans certains cas très particuliers il peut être intéressant de savoir le nombre de ligne que va renvoyer une requête sans exécuter cette dernière. En effet les opérations de comptage sont généralement gourmande en ressource est très difficile à optim...
Cliquez pour lire la suite de l'article par christian [WF4] ACTIVITY AVEC VUE DéTAIL MASQUéE PAR DéFAUT, VIVE WPF![WF4] ACTIVITY AVEC VUE DéTAIL MASQUéE PAR DéFAUT, VIVE WPF! par JeremyJeanson
Le code suivant est destiné à répondre à une problématique courante en Workflow : Vous avez une activité dont le designer est complexe ou dont l'affichage prend une place importante à l'écran et la possibilité Collapse/Expand ne répond pas pleinement à vo...
Cliquez pour lire la suite de l'article par JeremyJeanson
Forum
RE : GOOGLEMAPRE : GOOGLEMAP par GREGGRAPH
Cliquez pour lire la suite par GREGGRAPH
Logiciels
Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods Konvertor (4.00)KONVERTOR (4.00)Le logiciel est un gestionnaire multimedia affichant, jouant et convertissant plus de 2000 format... Cliquez pour télécharger Konvertor
|