【发布时间】:2011-10-21 23:17:09
【问题描述】:
我有一个名为Request 的课程。在该类中的某个时刻,我使用以下代码创建了一个新控制器,并在构造函数中传递了$this:
$controller = new $this->_controllerName($this);
我的控制器构造函数如下:
public function __construct(Request $request) {
parent::__construct($request);
// More stuff
}
如果我在此对象或其父对象中修改$request,则最初调用它的对象中的值不会改变。我还尝试将构造函数定义更改为public function __construct(Request &$request) {(如php.net 所述),但这也不起作用。我该如何解决这个问题?
提前致谢!
编辑 1: 问了一些代码,这些代码显示了我对 $request 所做的事情。该类有一个名为_response 的公共属性,它有一个名为_body 的公共属性。在我的一种方法中,我执行以下操作:
$this->_request->_response->_body = $this->_template->_render();
现在,我需要调用方法的请求具有相同的_request 属性,以便我可以获取正文。
我忘了提到我在调用方法后立即取消设置对象,这是一个问题吗?
编辑 2: 正如下面所指出的,它确实有效,但是当我从 __destruct() 函数调用它时,它不知何故不再有效。为什么会这样?
【问题讨论】:
-
您能否发布一些代码来显示您对 $request 的实际操作?
-
对象默认是作为引用传递的,所以不需要加&。
-
@GolezTrol,PHP5 OOP 中经常被提及的关键点之一是“对象默认通过引用传递”。这并不完全正确。 (c)PHP手册
-
我建议尝试“最少的代码有效”的方法,或者,如果一个简单的示例也不起作用,请在此处发布,以便我们尝试修复它。
-
@GolezTrol & 符号在这里没用。是的,我也明白。我注意到它是为了避免其他人在没有大脑的情况下使用您的信息:) 也许有人会阅读手册
标签: php oop reference pass-by-reference