类方法链

时间:2013-02-27 21:46:36

标签: php

我有以下代码,但它似乎不想连接工作。

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

上述工作并运行正常,但是当我尝试执行以下操作时:

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

我收到以下错误:

  

致命错误:在....中的非对象上调用成员函数render()

但奇怪的是,当我用另一种方式称呼它时:

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

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

谢谢你

1 个答案:

答案 0 :(得分:5)

setData()是否会返回视图对象(即它有return $this;行)?如果不是......那么如果你想让它以这种方式工作,那就应该好了。

供进一步参考。这种技术称为“流畅的界面”,在此描述: http://www.martinfowler.com/bliki/FluentInterface.html