|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
[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
Sources en rapport avec celle ci
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
|
Téléchargements
Logiciels à télécharger sur le même thème :
Comparez les prix Nouvelle version
|