2012-01-29 4 views
-1

내 페이지의 특정 부분을로드하는 클래스가 있습니다. 내가 뭘 원하는 내가 URI 세그먼트 /admin/ 포함 된 경우 검사가 볼 수있는 생성자 내 수업에서이메소드가 이미 호출되었는지 확인하려면 어떻게해야합니까?

index.php 

$obj->load('admin'); 

이며, 그것은 자동으로로드 한 후 관리자 페이지 않는 경우 :

$this->load('admin');

이제 모두 잘 작동합니다. 두 프로젝트가 모두 입력되면 두 번째로 admin 초기화가로드됩니다.

load() 메서드가 이미 호출되었는지 그리고 매개 변수가 ==에서 admin인지 확인하는 방법이 있습니까? 객체의 멤버 변수 변수를 유지

function load($what) { 

    static $loaded = array(); 

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

    // Load.. 

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

싱글 톤 패턴을 사용하십시오. http://php.net/manual/en/language.oop5.patterns.php –

답변

2

한 가지 방법은 static 캐시를 사용하는 것입니다. 두 번째 통화 중에 플래그를 확인하십시오.

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

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

이 될 수 있으며, 부하 관리가 처음으로 호출 될 때 플래그를 유지 :

0

가장 쉬운 것 - '$ invokedAlready'라고하는 추가 변수를 만듭니다. 먼저 '거짓'으로 설정하십시오. 귀하의 방법으로 이것을 배치하십시오 :

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