2012-01-29 6 views
-1

私のページの特定の部分を読み込むクラスがあります。メソッドが既に呼び出されているかどうかを確認するにはどうすればいいですか?

$this->load('admin');:私は何をしたいURIセグメント/admin/が含まれており、それがないならば、それは自動管理ページをロードする場合、私は見るためにチェックを持っているコンストラクタで私のクラスでは、この

index.php 

$obj->load('admin'); 

です

現在、どちらも問題なく動作していますが、私は自分のプロジェクトに両方のエントリがあると、adminの初期化を2回ロードします。

load()メソッドが既に呼び出されていて、パラメータが==adminの場合は、私がチェックする方法はありますか?

+0

シングルトンパターンを使用するhttp://php.net/manual/en/language.oop5.patterns.php –

答えて

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

オブジェクトのメンバ変数変数を維持し、負荷管理者が最初に呼び出されたときにフラグを維持してもよいです。 2番目の通話中にフラグを確認します。

0

最も簡単に - say '$ invokedAlready'という追加の変数を作成します。最初に「false」に設定します。あなたの方法でこれを置く:

if ($invokedAlready) 
{ 
    // do sth 
} 
else 
{ 
    // first invocaion 
    // do sth else 
    $invokedFirst = true; 
} 
関連する問題