<?phpРезультат...
class Singleton{
static private $instance = NULL;
public $str="nole";
static function getInstance(){
if (self::$instance == NULL){
self::$instance = new Singleton();
}
return self::$instance;
}
function __construct(){
}
function __clone(){
}
}//s5_dobject_singleton
class Singleton1_0 extends Singleton{
}
class Singleton1_1 extends Singleton{
}
class Singleton1_2 extends Singleton{
}
$s_lev0_0=Singleton::getInstance();
$s_lev0_0->str='lev0_0';
$s_lev0_1=Singleton::getInstance();
$s_lev0_1->str='lev0_1';
$s_lev0_2=Singleton::getInstance();
$s_lev0_2->str='lev0_2';
//
$s_lev1_0=Singleton1_0::getInstance();
$s_lev1_0->str='lev1_0';
$s_lev1_1=Singleton1_1::getInstance();
$s_lev1_1->str='lev1_1';
$s_lev1_2=Singleton1_2::getInstance();
$s_lev1_2->str='lev1_2';
//
print 'lev0_0='.$s_lev0_0->str.'<br>';
print 'lev0_1='.$s_lev0_1->str.'<br>';
print 'lev0_2='.$s_lev0_2->str.'<br>';
//
print 'lev1_0='.$s_lev0_0->str.'<br>';
print 'lev1_1='.$s_lev1_1->str.'<br>';
print 'lev1_2='.$s_lev1_2->str.'<br>';
?>
lev0_0=lev1_2
lev0_1=lev1_2
lev0_2=lev1_2
lev1_0=lev1_2
lev1_1=lev1_2
lev1_2=lev1_2
Вывод:
Не в зависимости от иерархии все классы имеют одинаковый $instance. Будьте с этим осторожны.
Комментариев нет:
Отправить комментарий