Ada*_*iss 15
与语言无关的答案:
保留(静态或全局)"状态"变量,并在调用它时在先决条件函数中设置一个标志.检查依赖函数中的标志以确定是否允许它运行.
嗯,最简单的解决方案是在运行需要它的方法之前简单地调用此方法.如果您不想每次都运行该方法,但只有当您的对象的某些内部状态适用时,您才会这样做
class Foo
{
protected $_someState = 'originalState';
public function runMeFirst()
{
// code ...
$this->_someState = 'changedState';
}
public function someMethod()
{
if(!$this->_someState === 'changedState') {
$this->runMeFirst();
}
// other code ...
}
}
Run Code Online (Sandbox Code Playgroud)
只要需要检查和调用的方法和状态与您要调用的方法位于同一个类中,上述内容可能是最佳解决方案.与其他地方建议的一样,您可以将someState检查到类中的单独函数中,但这并非绝对必要.我只会这样做,如果我必须从多个位置检查状态以防止代码重复,例如必须一遍又一遍地写相同的if语句.
如果方法调用依赖于外部对象的状态,则有几个选项.请告诉我们有关该情况的更多信息,因为它在某种程度上取决于用例.