2012-01-29 58 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; 
} 
相關問題