gpt4 book ai didi

php - 无论如何要获得调用 OOP 方法的顺序?

转载 作者:搜寻专家 更新时间:2023-10-31 21:46:38 25 4
gpt4 key购买 nike

例如,假设我有一组类和方法可以这样做:

$obj->method1()->method2();

method1() 本身是否知道它是第一个被调用的方法,或者 method2 是否知道它是最后一个?

更多细节
我只是希望能够构建一组这样的调用,以便如果对该方法的调用不在链的末尾,它会返回一个自身的实例,或者如果它在链的末尾,则返回不同的东西。

例如

$obj->method1()->method2(); #Here method 2 will return lets say a string.
$obj->method1()->method2()->method3(); #Since method2 isnt at the end of the chain, it should return an instance of itself (or another object) here so that the chain could continue.

编辑:任何试图这样做的人 - 这是一个糟糕的设计模式。

这似乎是重复的。引用this question获取更多答案。

最佳答案

不是开箱即用的,甚至没有堆栈跟踪。

我想您可以使用常量或全局变量将某些东西放在一起:

不要在家里尝试这个!

$GLOBALS["chain"] = array();
$obj->method1()->method2(); // method1 adds member to $GLOBALS["chain"],
// array_push($GLOBALS["chain"], __FUNCTION__);
// method2 does the same...
print_r($GLOBALS["chain"]);

这将为您提供完整的链 - 还没有哪一个是最后一个,为此,您必须将标志传递给 method2()

但这会非常骇人听闻并且会污染您的代码。

您是否有特定的原因需要它?

关于php - 无论如何要获得调用 OOP 方法的顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2307046/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com