La notation hongroise (ou polonaise chéplu) j'aime bien pour les variables pourquoi pas, mais pour les noms de fonctions/méthodes je ne trouve pas ça très heureux... Ce sont des noms dont il faut se souvenir, et il est plus naturel de se souvenir du nom de la méthode selon ce qu'elle fait (méthode = action) que selon ce qu'elle renvoie. D'autant que ce qu'elle renvoie est souvent totalement évident.
De plus pour une chaine le préfixe "s_" me semble un meilleur choix que "c_". L'anglais reste la langue commune dans notre domaine.
Ensuite tu as essayé de regarder ce que renvoyait ton get_defined_vars() dans ta première méthode ? Comme tu ne déclares aucun accès global à une variable dans ta méthode, et que tu ne déclares aucune variable à part $c_fichier, je pense que son retour est totalement prévisible : [c_fichier,_POST,_GET,_COOKIE,_FILES,_REQUEST,etc...]. Mais bon utiliser cette fonction a au moins l'avantage de ne pas avoir à se poser la question J'imagine que tu as du te poser la question, tu as choisi la méthode la moins performante mais la plus sûre (insensible à l'ajout futur de superglobales) et la plus lisible.
D'une manière générale, c'est au niveau de la conception surtout que j'agirais différemment, parce que là le modèle objet est sous-exploité. Finalement ce n'est pas une classe, juste un «set de méthodes». On aurait pu aller beaucoup plus loin dans l'ergonomie avec par exemple un modèle de ce type :
Au passage, la méthode instance() étant un cas d'école, voici comment elle fonctionne (pour ceux que ça intéresse, voire toi si tu ne le savais pas déjà)
Tu pourras appeler 26 fois Configuration::instance(), elle te renverra toujours le même objet De plus pour une chaine le préfixe "s_" me semble un meilleur choix que "c_". L'anglais reste la langue commune dans notre domaine.
Ensuite tu as essayé de regarder ce que renvoyait ton get_defined_vars() dans ta première méthode ? Comme tu ne déclares aucun accès global à une variable dans ta méthode, et que tu ne déclares aucune variable à part $c_fichier, je pense que son retour est totalement prévisible : [c_fichier,_POST,_GET,_COOKIE,_FILES,_REQUEST,etc...]. Mais bon utiliser cette fonction a au moins l'avantage de ne pas avoir à se poser la question J'imagine que tu as du te poser la question, tu as choisi la méthode la moins performante mais la plus sûre (insensible à l'ajout futur de superglobales) et la plus lisible.
D'une manière générale, c'est au niveau de la conception surtout que j'agirais différemment, parce que là le modèle objet est sous-exploité. Finalement ce n'est pas une classe, juste un «set de méthodes». On aurait pu aller beaucoup plus loin dans l'ergonomie avec par exemple un modèle de ce type :
Code :
bool chargementPHP ( string $fichier [, string $section] )
Charge les variables déclarés dans le script $fichier, et les place dans la section $section.
Si aucune section n'est définie, on place dans la section générale "".
bool chargementINI ( string $fichier )
Charge les variables déclarées dans le fichier $fichier, et les place dans les sections définies.
bool sauverPHP ( string $fichier )
Sauvegarde les variables dans un fichier de déclarations de variables $fichier.
bool sauverINI ( string $fichier )
Sauvegarde les variables dans un fichier de configuration ini $fichier.
mixed getVar ( string $variable [, string $section ] )
Récupère la valeur de la variable $variable, dans la section $section.
Si $section est indéfini, on cherche dans la section générale "".
array getVars ( [ string $section ] )
Récupère toutes les variables de la section $section, sous forme de tableau associatif [nom] => valeur.
Si $section est indéfini, on cherche dans la section générale "".
bool setVar ( string $variable , mixed $valeur [, string $section ] )
Définit la variable $variable à la valeur $valeur, dans la section $section.
Si $section est indéfini, on cherche dans la section générale "".
bool setVars ( array $variables [, string $section ] )
Définit des variables dans la section $section, sous forme de tableau associatif [nom] => valeur.
Si $section est indéfini, on cherche dans la section générale "".
bool unsetVar ( $variable [, $section ] )
Supprime la variable $variable, dans la section $section.
Si $section est indéfini, on cherche dans la section générale "".
bool unsetVars ( [ $section ] )
Supprime toutes les variables de la section $section, et supprime la section.
Si $section est indéfini, on cherche dans la section générale "".
bool unsetAll ( )
Supprime toutes les variables et les sections.
void __construct ( )
Construit un nouvel objet Configuration vide.
static Configuration instance ( )
Renvoie une instance statique de Configuration, utile pour travailler sur un système de configuration globale à l'application sans avoir à travailler avec une variable globale.
Au passage, la méthode instance() étant un cas d'école, voici comment elle fonctionne (pour ceux que ça intéresse, voire toi si tu ne le savais pas déjà)
Code PHP :
<?php
class Configuration
{
...
function instance ()
{
static $instance = null;
if ($instance === null) {
$instance = new Configuration();
}
return $instance;
}
...
}
Ce genre de méthode est extrèmement utile pour des classes dont les instances sont utilisées tout au long de l'application : BDD, Config, Session, sont les premiers qui viennent à l'esprit