Почему у двух разных экземпляров одного класса одинаковые идентификаторы?

Я знаю что возможно так делать не рекомендуется, но я хочу понять почему это так работает.

Почему при создании двух экземпляров классов и выводе их через 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 шт):

Автор решения: Sararun

твоя проблема в том, что ты создаешь экземпляр объекта через такую запись (new SimpleClass()). Такая запись подразумевает, что ты нигде не хранишь результат всего того, что ты делал с объектом. Если бы у тебя был объект, который умеет хранить глобальный стейт, то это одно дело, у тебя такого в реализации нет. Сохрани объект в какую-то переменную

→ Ссылка