[Singleton] Héritage en 5.2.*
Posté : 26 févr. 2011, 13:39
par katagoto
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
Re: [Singleton] Héritage en 5.2.*
Posté : 26 févr. 2011, 16:25
par stealth35
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
http://fr.php.net/manual/fr/function.ge ... .php#89478
Re: [Singleton] Héritage en 5.2.*
Posté : 27 févr. 2011, 13:22
par katagoto
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() {}
}