编程语言
首页 > 编程语言> > PHP方法链 – 反映?

PHP方法链 – 反映?

作者:互联网

是否有可能反映一系列方法调用,以确定您在调用链中的位置?
至少,是否有可能辨别一个方法是否是链中的最后一个调用?

$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();

会离开调用堆栈,如:
数组(‘f1′,’f2′,’f1’);

标签:php,methods,properties,reflection,method-chaining
来源: https://codeday.me/bug/20190627/1301808.html