检查功能是否已被调用

时间:2009-12-19 14:34:21

标签: php oop

PHP中的OOP新手

我的一个功能需要在运行之前执行另一个功能。我有办法检查这个吗?

5 个答案:

答案 0 :(得分:15)

与语言无关的答案:

保持(静态或全局)“状态”变量,并在调用它时在先决条件函数中设置一个标志。检查依赖函数中的标志以确定是否允许它运行。

答案 1 :(得分:7)

嗯,最简单的解决方案是在运行需要它的方法之前简单地调用此方法。如果您不想每次都运行该方法,但只有当对象的某个内部状态适用时,您才会执行

class Foo
{
    protected $_someState = 'originalState';

    public function runMeFirst()
    {
        // code ...
        $this->_someState = 'changedState';
    }

    public function someMethod()
    {
        if(!$this->_someState === 'changedState') {
            $this->runMeFirst();
        }
        // other code ...
    }
}

只要需要检查和调用的方法和状态与您要调用的方法位于同一个类中,上述内容可能是最佳解决方案。与其他地方建议的一样,您可以将someState检查到类中的单独函数中,但这并非绝对必要。我只会这样做,如果我必须从多个位置检查状态以防止代码重复,例如必须一遍又一遍地写同一个if语句。

如果方法调用依赖于外部对象的状态,则有几个选项。请告诉我们有关该情况的更多信息,因为它在某种程度上取决于用例。

答案 2 :(得分:4)

另一个函数(应该首先调用的函数)将操纵某个状态,这就是第二个函数需要知道该状态的原因。我不知道有关内置的​​PHP,但我最终会创建另一个函数,它返回有关该状态的信息,例如isReadyToRunSomethingisValidhasConnection ..或其他..然后在第二个函数的开头使用此函数,以查看是否允许它运行。

答案 3 :(得分:1)

观察者模式可用于执行您想要的操作(通知观察者事件将会发生,以便他们可以执行某些操作)。

答案 4 :(得分:0)

创建第三个函数C,它调用A然后调用B,并在整个地方使用该新函数。在OOP术语中,A和B应该在您的班级受到保护,而C是公开的,例如:适用于任何使用您班级的人。