Почему у двух разных экземпляров одного класса одинаковые идентификаторы?
Я знаю что возможно так делать не рекомендуется, но я хочу понять почему это так работает.
Почему при создании двух экземпляров классов и выводе их через var_dump я вижу что у них одинаковый идентификатор, но при установке значения я получаю NULL, хотя должен получить установленное значение, ведь у них одинаковый идентификатор?
Когда я создаю и вывожу 2 объекта класса SimpleClass я вижу что эти 2 объекта имеют одинаковый идентификатор:
var_dump(new SimpleClass()); <br>
var_dump(new SimpleClass());
Вывод: <br>
object(SimpleClass)#2 (1) {
["var"]=>
NULL
} <br>
object(SimpleClass)#2 (1) {
["var"]=>
NULL
}
Но когда я хочу установить значение через метод setVar и получить его через getVar, то почему я получаю в итоге NULL?
(new SimpleClass())->setVar('hello');
var_dump((new SimpleClass())->getVar());
Хотя по сути я должен был получить 'hello'.
Вот полный код:
class SimpleClass {
public $var;
public function setVar($txt)
{
$this->var = $txt;
}
public function getVar()
{
return $this->var;
}
}
var_dump(new SimpleClass()); <br>
var_dump(new SimpleClass()); <br>
(new SimpleClass())->setVar('hello'); <br>
var_dump((new SimpleClass())->getVar());
Ответы (1 шт):
твоя проблема в том, что ты создаешь экземпляр объекта через такую запись (new SimpleClass()). Такая запись подразумевает, что ты нигде не хранишь результат всего того, что ты делал с объектом. Если бы у тебя был объект, который умеет хранить глобальный стейт, то это одно дело, у тебя такого в реализации нет. Сохрани объект в какую-то переменную