如果不调用特定方法,请检查是否已调用方法

时间:2012-08-16 08:18:41

标签: php oop

如果没有调用方法,我想调用一个方法,具体示例:

文件foo.php只包含

$p = new Foo();

没有调用任何方法会触发特定方法。

文件foo.php现在包含

$p = new Foo();
$p->bar();

这不会触发特定方法,因为调用了一个方法。

这样做的目的是为在课程开始时使用我的课程的用户显示帮助。

此外我还在考虑使用__destruct(),但是在调用destruct时我不太确定。

2 个答案:

答案 0 :(得分:4)

根据DaveRandoms 惊人的评论:

class fooby
{
    private $hasCalled=false;

    function __destruct()
    {
        if(!$this->hasCalled)
        {
            // Run whatever you want here. No method has been called.
            echo "Bazinga!";
        }
    }

    public function someFunc()
    {
        $this->hasCalled=true;
        // Have this line in EVERY function in the object.
        echo "Funky Monkey";
    }
}

$var1 = new fooby();
$var1->someFunc(); // Output: Funky Monkey
$var1 = null; // No triggered trickery.

$var2= new fooby();
$var2 = null; // Output: Bazinga!

答案 1 :(得分:3)

__destruct()是正确的。

class Foo {

     private $method_invoked = false;

     public function bar(){
         $this->method_invoked = true;
         print 'bar';
     }

     function __destruct(){
         if(!$this->method_invoked) {
             print 'destr'; 
         }
     }

}