Изменения в объекте __destruct () не сохранены PHP

Возможный дубликат:
Передать ссылку на $ this в конструкторе PHP

Я работаю над простой PHP-инфраструктурой в качестве учебного проекта. У меня есть объект запроса с методом _execute() . В этом методе я (между прочим) создаю объект, называемый pageController, вызываю метод на нем и удаляю объект, используя следующий код:

 $controller = new $this->_controllerName($this); call_user_func(array($controller, $this->_methodName)); unset($controller); 

Как вы можете видеть, я передаю текущий объект конструктору нового pageController. Мой конструктор выглядит следующим образом:

 public function __construct(Request $request) { parent::__construct($request); // More stuff } 

Контроллер родителя выглядит следующим образом:

 public function __construct(Request $request) { $this->_request = $request; } 

Все это прекрасно работает, но есть проблема с моим деструктором. В pageController у меня есть еще два метода:

 public function __destruct() { $this->_render(); } public function _render($templateName = 'default') { $this->_request->_response->_body = $this->_template->_render(); } 

Мой _render() отлично работает, если я вызываю его из другого метода в pageController: я могу получить тело ответа из исходного объекта запроса, используя $this->_response->_body . Однако, когда я вызываю метод _render() из моего деструктора, изменения не изменяются в объекте запроса. Когда я вызываю print_r() сразу после вызова функции _render() , изменения как- то видны …

Подводя итог: любые изменения, которые я делаю для свойства _request в деструкторе, как-то не меняются в исходном объекте запроса, который ссылается на то же, поскольку объекты (почти) всегда не копируются, а ссылаются. Что я делаю не так?

Примечание. Я задал аналогичный вопрос до этого , но эти вопросы были недостаточно конкретными (потому что я не полностью понял проблему, а затем и благодаря плохим испытаниям самостоятельно). Я решил, что должен задать новый, конкретный, прямой вопрос, чтобы кто-то мог мне помочь.