2015-01-02 7 views
1

나는 파일 구조가 같은 있습니다. 이 코드 : Fatal error: Class 'Acme\Universal' not found in ...이해 PSR-4

나는이 조각을 사용하는 경우 composer.json에서 :

$obj = new Acme\Universal(); 

나에게 오류 제공합니다

"autoload": { 
    "psr-4": {"Acme\\": "src/"} 
} 

을하지만

"autoload": { 
    "psr-4": {"Acme\\": ["src/", "src/Acme/"]} 
} 

을 사용하는 경우 모든 작동합니다. 난

$otherObj = new Acme\Foul\Nest(); 

내가 composer install 나는 composer.json 파일을 변경할 때마다 실행했는지주의에 액세스 할 수 있습니다.

답변

3

PSR-4는 검색 할 경로에 접두사를 포함하지 않으므로 PSR-0은 검색 경로에 접두어를 포함하지 않습니다.

그래서 Acme\Universal"Acme\\": "src/"src/Universal.php의 PSR-4와 src/Acme/Universal.php의 PSR-0으로 검색됩니다.

이 경우 src/Acme/ 디렉토리의 내용을 src/으로 옮겨야합니다. PSR-4는 하나의 하위 디렉토리 만 가지고이 디렉토리를 제거하고 다른 파일은 삭제하지 않도록 정확하게 생성되었습니다.