Здесь происходит то, что $global_obj
является ссылкой на переменную $this
. $this
- это псевдопеременная, которая существует внутри методов и является ссылкой на текущий объект. Но кто знает, что происходит с $this
, когда оно выходит за рамки метода. Вероятно, плохая идея иметь ссылку на $this
.
На самом деле, если вы исследуете его немного дальше, после того, как ваш конструктор вернется, если вы изучите $global_obj
, его значение будет null
. Механизм PHP, вероятно, устанавливает $this
в null после выхода из метода (но это нигде не задокументировано), и после него следует ваш $global_obj
, поскольку он является ссылкой на переменную $this
. Когда вы устанавливаете атрибут на null
, он автоматически создает новый объект класса stdClass
, поэтому кажется, что он успешен. Но, конечно, это совершенно другой объект, чем тот, что в $a
.