假设我有这门课
class Test
{
method_a(){ return $this;}
method_b(){ return $this;}
method_c(){ return $this;}
}
$obj = new Test();
$obj->method_a()->method_b();
$obj->method_a()->method_c();
$obj->method_b()->method_c(); //i want to disallow this
如何禁止 method_b() 与 method_c() 链接
已编辑:
调用 $obj->method_b() 并随后调用 $obj->method_c() 也不允许,因为我只希望 method_b 与 method_a 链接,method_c 与其他方法链接
最佳答案
我能想到两种可能性。第一个是不返回$this
来自method_b()
。这将防止链接method_c()
- 但其他一切也一样,所以这似乎不是您要找的。p>
第二个有点难看,但可能会按预期工作:添加另一个私有(private)变量 $last_method
到你的类并在每个被调用的方法中设置它(方法名称或某种id)。这样,当调用method_c()
时,你可以检查最后调用的方法是否是 method_b()
- 如果是这样,抛出一个异常(或者在这种情况下你想做的任何事情)。请注意,此解决方案还会阻止调用 method_b()
和method_c()
在同一个对象上连续而不链接 - 所以这可能不是 100% 您正在寻找的。p>
关于php - 限制其他方法上的方法链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10160319/