[Singleton] Héritage en 5.2.*

Mammouth du PHP | 1668 Messages

26 févr. 2011, 13:39

Bonjour à toutes et à tous,

J'aimerais implémenter le design pattern Singleton une fois et en hérité sur un certain nombre de classes.
Le soucis c'est que je travail avec PHP 5.2.*, donc ni LSB ni get_called_class().
Comment faire pour que je puisse utiliser l'héritage de manière propre ?

Par avance,
Merci
"À ceux qui poursuivent leurs rêves et se spécialisent dans l'impossible" Joseph Kong

10 ans de PHP, déjà.

"moi jtrouve que katagoto il déchire!" Nagol

ViPHP
ViPHP | 5462 Messages

26 févr. 2011, 16:25

Bonjour à toutes et à tous,

J'aimerais implémenter le design pattern Singleton une fois et en hérité sur un certain nombre de classes.
Le soucis c'est que je travail avec PHP 5.2.*, donc ni LSB ni get_called_class().
Comment faire pour que je puisse utiliser l'héritage de manière propre ?

Par avance,
Merci
de manière propre c'est pas possible, de manière sale c'est possible :wink:

http://fr.php.net/manual/fr/function.ge ... .php#89478

Mammouth du PHP | 1668 Messages

27 févr. 2011, 13:22

Merci, c'est très sale, mais ça marche :

Code : Tout sélectionner

abstract class Singleton { final public static function getInstance() { static $instance = null; if ($instance === null) { if(version_compare(PHP_VERSION, '5.3.0') < 0) { $p = debug_backtrace(); $f = file($p[0]['file']); preg_match('/([a-zA-Z0-9\_]+)::'.$p[0]['function'].'/', $f[$p[0]['line']-1], $r); $c = $r[1]; $instance = new $c(); } else die('Decommentez la ligne suivante : <b>'.(__LINE__ + 1).'</b> du fichier <b>'.__FILE__.'</b><br/>'); //$instance = new static(); } return $instance; } protected function __construct() {echo 'Papa', "\n";} protected function __clone() {} }
"À ceux qui poursuivent leurs rêves et se spécialisent dans l'impossible" Joseph Kong

10 ans de PHP, déjà.

"moi jtrouve que katagoto il déchire!" Nagol