是否有可能反射(reflection)一连串的方法调用以确定您在调用链中的哪个位置? 至少,是否可以辨别一个方法是否是链中的最后一个调用?
$instance->method1()->method2()->method3()->method4()
是否可以使用返回对象实例的属性来做同样的事情?
$instances->property1->property2->property3->property4
最佳答案
如果您调用的所有方法都返回相同对象来创建流畅的界面(而不是将不同的对象链接在一起),那么在对象本身。
例如:
class Eg {
protected $_callStack = array();
public function f1()
{
$this->_callStack[] = __METHOD__;
// other work
}
public function f2()
{
$this->_callStack[] = __METHOD__;
// other work
}
public function getCallStack()
{
return $this->_callStack;
}
}
然后像这样链接调用
$a = new Eg;
$a->f1()->f2()->f1();
会保留如下调用堆栈: array('f1', 'f2', 'f1');
关于PHP 方法链 - 反射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1178487/