我如何检查方法是否已被调用?

时间:2012-01-29 10:52:45

标签: php

我有一个类加载我页面的某些部分。我想做的是这个

index.php

$obj->load('admin');

在构造函数的我的类中,我检查URI是否包含段/admin/,如果是,则自动加载管理页面:

$this->load('admin');

现在两者都工作正常,我才意识到,如果我的项目中有两个条目,那么它将加载admin初始化两次。

我有办法检查load()方法是否已被调用,且参数是==admin吗?

4 个答案:

答案 0 :(得分:2)

一种方法是使用static缓存:

function load($what) {

  static $loaded = array();

  if (!isset($loaded[$what])) {

    // Load..

    // Mark as loaded
    $loaded[$what] = true;
  }
}

答案 1 :(得分:1)

class Foo {
    private $loaded = false;
    function someFunc() {
        $this->loaded = true;
    }

    function loaded() {
        return $this->loaded;
    }
}

答案 2 :(得分:0)

可以保留一个对象成员变量变量,并在第一次调用load admin时保留一个标志。在第二次通话中检查标志。

答案 3 :(得分:0)

最简单 - 创建名为'$ invokedAlready'的附加变量。首先将其设置为“false”。在你的方法中放置:

if ( $invokedAlready )
{
    // do sth
}
else
{
    // first invocaion
    // do sth else
    $invokedFirst = true;
}