Bonjour à tous.
Alors voilà, actuellement le schéma que j'utilise pour faire un singleton en PHP est celui-ci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 class ConnexionManager { private static $instance; private $arrConn; private function __construct() { $this->arrConn = array(); } public static function getInstance() { if (empty(self::$instance)) self::$instance = new ConnexionManager(); return self::$instance; } public function __clone() { trigger_error('Le clônage n\'est pas autorisé.', E_USER_ERROR); } // ... le reste est tronqué }
Vous allez dire que je suis peut-être exigeant, mais je trouve un peu désagréable de devoir toujours faire:
Au lieu de ce qu'on s'attendrait normalement:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $dbMgr = ConnexionManager::getInstance();
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $dbMgr = new ConnexionManager();
Alors je me suis demandé s'il était possible de rendre le singleton plus... agréable, et j'en suis venu à penser à ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 class ConnexionManager { private static $instance; private $arrConn; public function __construct() //Constructeur du singleton { if (!is_object(self::$instance)) { $this->init(func_get_args()); self::$instance = $this; //L'idée est ici. } return self::$instance; } public function __clone() { trigger_error('Le clônage n\'est pas autorisé.', E_USER_ERROR); } private function init($arrParam) //Constructeur de l'objet { $this->arrConn = array(); } // ... le reste est tronqué }
Cependant, j'ai une sorte de mauvais présentiment, alors je me suis dit que si l'idée était mauvaise, vous aurriez tôt fait de m'indiquer les raisons.
Alors, vous en pensez quoi ?







Répondre avec citation









Partager