是否可以反思方法调用链来确定您处于调用链中的哪个点?
至少,是否可以辨别一个方法是否是链中的最后一个调用?
$instance->method1()->method2()->method3()->method4()
是否可以使用返回对象实例的属性来执行相同的操作?
$instances->property1->property2->property3->property4
如果您调用的所有方法都返回same对象来创建流畅的接口(而不是将不同的对象链接在一起),在对象本身中记录方法调用应该是相当简单的。
eg:
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();
会留下像这样的调用堆栈:
数组('f1','f2','f1');
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)