php $this->render,在构造函数PHP中传递对$this的引用

我有一个叫做Request的类.在该类的某个时刻,我使用以下代码创建一个新的控制器,并在构造函数中传递$this:

$controller = new $this->_controllerName($this);

我的控制器构造函数如下:

public function __construct(Request $request) {

parent::__construct($request);

// More stuff

}

如果我在此对象或其父对象中修改$request,则在最初调用它的对象中值不会更改.我还尝试将构造函数定义更改为公共函数__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

因此,在两种情况下都可以正常工作

标签:php,oop,reference,pass-by-reference

来源: https://codeday.me/bug/20191011/1891497.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值