2017-04-10 1 views
0

PHP에서 spl_autoload_register에 대한 질문이 있습니다. 그것이 내가 수업 시간에 '사용 foo는'사용 php spl_autoload_register redaclare

// Use default autoload implementation 
spl_autoload_register(function($class){ 

    //========================================== 
    //use foo => src\store\services\httprequest 
    //========================================== 
    if($class=="foo"){ 
     $class='src\store\services\httprequest'; 
    } 

    $class=root.'/'.$class.'.php'; 

    $class=str_replace("\\","/",$class); 

    require($class); 

}); 

, 내가 spl_autoload_register가의 src \ 저장 \ 서비스처럼 사용하려면 .. 즉이다 \ HttpRequest를 ...하지만 redaclare으로 반환합니다.

해결할 수 있습니까? 답변에 대한

덕분에 ..

+0

'require' ~'require_once' – JustOnUnderMillions

답변

0

class_exists() - 확인 클래스는 클래스가 이미로드되어 있는지 먼저 확인에

변경합니다 오토로더를 정의 그렇다면 다음 그것을 무시 된 경우. 문제는 클래스 파일을 여러 번로드 할 때 클래스를 재 시도한다는 것입니다.

require $class 진술 바로 전에 이와 같은 작업을해야합니다. 자동로드 자체를 방지하기 위해 두 번째 인수로 false의 사용법을 참고하십시오.

if (class_exists($class, false)) { 
    return; 
} 

대신 require_once을 사용하는 것이 좋습니다. 이렇게하면 같은 파일이로드되는 것을 방지 할 수 있습니다.