2013-02-27 123 views
1

我有以下代码,但它似乎并不想工作链接。类方法链接

$this->view->setData($class_vars); 
$this->view->render('addview'); 

上述工作,并运行良好,但是当我尝试做到以下几点:

$this->view->setData($class_vars)->render('addview'); 

我收到以下错误:

Fatal error: Call to a member function render() on a non-object in....

但奇怪的是,当我打电话它的另一种方式:

$this->view->render('addview')->setData($class_vars); 

它运行,但我需要setData先运行,因为这为实际视图设置了var,所以即使我得到的视图它的错误应该是哪些变量?两种方法都是公开的?

感谢您

回答

5

setData()返回视图对象(即它具有return $this;线)?如果不是,那么它应该如果你希望它以这种方式工作。

有待进一步参考。这种技术被称为'流畅的接口',这里描述: http://www.martinfowler.com/bliki/FluentInterface.html

+0

事实上,链接不是一个魔术,为了运行,你的函数必须返回调用该函数的对象。如果不是这样,那就结束了。在你的例子中,'render()'是返回视图,但不是'setData()' – MatRt 2013-02-27 21:51:51

+1

即将发布我自己的答案,但你首先得到那里值得信赖感谢:setData()我加回来$ this ;一切都好。谢谢啊! – 2013-02-27 21:52:26