2014-10-12 14 views
0

나는 PHP를 자동 로딩 할 때 젖은 발을 짚고있다. 나는 실제로 내가 기초를 가지고 있다고 생각하지만, 어떻게 든 그것은 여전히 ​​효과가 없을 것이다.spl autoloading : 클래스를 찾을 수 없습니다 - 네임 스페이스 문제가 있습니까?

myLib 
    -bootstrap.php 
    -sven 
     -project 
      project.php 

bootstrap.php는 lib 디렉토리를 사용하는 것이 포함됩니다 파일입니다 :

나는 다음과 같은 디렉토리 구조를 얻었다.

spl_autoload_extensions('.php'); 
spl_autoload_register(); 

$var = new \sven\project\project(); 
$var->init(); 

그리고 project.php에서 :

namespace sven\project; 

class project { 
    public function init() { 
     echo 'It works!'; 
    } 
} 

오토로더 내 이해, 사용 방법, 핵심 PHP의 자동 로더는 디렉토리로 네임 스페이스를 번역해야이 파일에서, 단순히 다음 코드가 다음 클래스를 포함하는 PHP를 찾습니다.

'작동합니다!'대신 "치명적인 오류가 발생합니다. 불행히도 CMS에서 치명적인 오류가 있음을 알리기 때문에 오류의 원인을 정확히 알 수 없습니다.
그런 간단한 구조로, 오류가 아주 간단하고 그것이 작동하는 방법을 아는 사람이 쉽게 찾을 수 있다고 확신합니다.

어디에서이 예제가 잘못 되었습니까? 오토로더가이 설정에서 어떻게 작동해야하는지 또는 오해가 있습니까?

편집 : 마지막으로 오류 로그를 실행 가지고 :

Fatal error: Class undefined: sven\\project\\project\\project\\project in /xxx/bootstrap.php on line 36

분명히 잘못된 보이지만, 어떻게를 변경하려면? 두 개의 백 슬래시가있는 이유는 무엇입니까?

답변

0
spl_autoload_extensions('.php'); 
spl_autoload_register(); 

이 코드는 PHP 5.3 이상에서만 작동합니다. 난 그냥 spl_autoload에 대한 또 다른 질문에 대답

+0

음, 5.6.99 & hhvm 3.3.0 ;-)을 실행 중입니다. – Sven

0

스벤, 나는 그것이 도움이되기를 바랍니다 내 예를 click here

을 시도!

추 신 : 경로에있는 모든 .php 파일을 자동로드하지 마십시오. 위험 할 수 있습니다.