在构造函数PHP中传递对$this的引用


Pass reference to $this in constructor PHP

我有一个名为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()函数调用它时,它不知何故不再有效。为什么会这样?


class Request{
    public $var= 'a';
    public $_controllerName='b';
    public function x(){
        $controller = new $this->_controllerName($this);
    }
}
class controller{
    public function __construct(Request $req){
        $req->var='xyz';
    }
}

class b extends controller{
    public function __construct(Request $req){
        parent::__construct($req);
        print $req->var;
        $req->var='LOL';
    }
}
$r=new Request();
$r->x();
print "'n";
print $r->var;

打印

xyz
LOL

因此,它在两种情况下都能很好地工作