2012-01-29 137 views
-1

我有一个类加载我的页面的某些部分。我想要做的就是这个如何检查一个方法是否已被调用?

index.php 

$obj->load('admin'); 

在我在构造函数中我看到一个检查,如果URI包含段/admin/类,如果那么做它自动加载的管理页面:

$this->load('admin');

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

有没有办法让我检查load()方法是否已经被调用,如果参数是==admin

+0

使用单例模式http://php.net/manual/en/language.oop5.patterns.php – 2012-01-29 10:57:11

回答

2

的一种方法是使用static缓存:

function load($what) { 

    static $loaded = array(); 

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

    // Load.. 

    // Mark as loaded 
    $loaded[$what] = true; 
    } 
} 
1
class Foo { 
    private $loaded = false; 
    function someFunc() { 
     $this->loaded = true; 
    } 

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

可能保持一个对象的成员变量变量,并保持标志时的负荷管理被称为首次。检查第二次通话期间的标志。

0

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

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