Wingely Dog
Guest
Объясните казус?
Обясните казус?
Сразу оговорюсь речь идет о четвертом php
Имеем некий класс
По хорошему, для создания объекта, мы выполняем конструкцию
вместо
тоесть ставим эмерсанд, для того, чтобы получить ссылку на объект в памяти а не копию объекта. Все вроде бы хорошо, но вот когда я пытаюсь организовать синглетон в виде
при каждом вызове функции, типа
$obj1 =& getFoo();
$obj2 =& getFoo();
создается новый объект.
Ежели же я делаю синглетон в виде
тоесть без эмперсанда, при вызове функции
$obj1 =& getFoo();
$obj2 =& getFoo();
обе переменных ссылются на один и тот же объект.
Вопрос.
Почему не работает синглетон на консрукции с эмперсандом? Где я что упустил?
Обясните казус?
Сразу оговорюсь речь идет о четвертом php
Имеем некий класс
PHP:
class Foo{
var $foo;
function Foo(){
}
}
PHP:
$obj =& new Foo();
PHP:
$obj = new Foo();
PHP:
function &getFoo(){
static $obj;
if (!isset($obj)){
$obj =& new Foo();
}
return $obj;
}
$obj1 =& getFoo();
$obj2 =& getFoo();
создается новый объект.
Ежели же я делаю синглетон в виде
PHP:
function &getFoo(){
static $obj;
if (!isset($obj)){
$obj = new Foo();
}
return $obj;
}
$obj1 =& getFoo();
$obj2 =& getFoo();
обе переменных ссылются на один и тот же объект.
Вопрос.
Почему не работает синглетон на консрукции с эмперсандом? Где я что упустил?