Bonjour a tous,
Voila je vais essayer d'expliquer mon problême, j'ai commencer un peu avec zend framework, je n'est pas trop de probleme a faire ce que j'ai envie, avec un peu de recherche je trouve les solutions mais quelque chose m'embête c'est que souvent je ne comprend pas vraiment le "pourquoi du comment".
Par exemple cette ligne:
$fc = Zend_Controller_Front::getInstance();
Donc j'ai été voir dans le dossier library et j'ai essayé de comprendre ... le probleme c'est que le code commence par 4 require_once, et donc je me sens pas plus avancé, mais a un moment dans le code je vois:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
/**
* Singleton instance
*
* @return Zend_Controller_Front
*/
public static function getInstance()
{
if (null === self::$_instance) {
self::$_instance = new self();
}
return self::$_instance;
} |
Donc la j'ai eu le un déclic je me suis dit que apprendre quelques motifs de conception serais peut etre une bonne chose pour comprendre ce framework ? (c'est ma premiere question)
Alors je me suis à rechercher des documents sur les singleton, je m'aperçois enfaite que c'est toujours la même chose et c'est pas trop dur a coder:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| class maSing
{
private static $instance = false;
private function __construct()
{
echo "instantiation de maSing";
}
public static function getInstance()
{
if(self::$instance === false)
{
self::$instance = new maSing();
}
return self::$instance;
}
static function afficher()
{
return "l instance";
}
}
echo maSing::getInstance()->afficher();
echo '<br />';
echo maSing::getInstance()->afficher();
echo '<br />';
echo maSing::getInstance()->afficher(); |
Donc en executant ce code je vois bien que je passe qu'une fois dans le constructeur, ok donc c'est justement l'interet de ce motif d'après les documents que j'ai trouvé, ce qui m'amène a ma deuxieme question:
Dans quel cas ce motif est indispensable ? comment ce comporterait par exemple Zend_Controller_Front si ce singleton n'y était pas ? quel changement il y aurais ? des risques niveau sécurité ?
(pardonnez moi mon orthographe, il faudrais aussi que je me penche la dessus mais j'ai pas du tout la même motivation que avec le PHP)
Partager