2017-03-29 23 views
1
내가 lib 디렉토리에서 HomeController 클래스를로드 할

:PSR-4 자동 로딩 문제

root/ 
-lib/ 
--/HomeController.php 
-vendor/ 
-composer.json 
-index.php 

Composer.json

"autoload": { 
    "psr-4": { 
     "Lib\\": "lib/" 
    } 
} 

HomeController.php

namespace Lib; 
class HomeController {} 

index.php를

var_damp(new \Lib\HomeController.php); 

클래스를 찾지 못했습니다.
하지만 내부 컨트롤러 디렉토리 HomeController.php 넣을 경우 :

root/ 
-lib/ 
--/Controllers/HomeController.php 

을 그리고 네임 스페이스를 업데이트

namespace Lib\Controllers; 
class HomeController {} 

그것은 완벽하게 작동합니다 index.php를에 var_damp(new \Lib\Controllers\HomeController.php);에와 HomeController.php.
이상한데, 내가 말하는 문서를 찾을 수 없습니다. 추가 디렉토리가 필요하지 않습니다.이 경우 HomeController 클래스를 직접 lib 디렉토리에 넣기를 원합니다.

lib 폴더에서 어떻게 작동합니까?

+0

'composer dumpautoload' 명령을 실행하지 못할 수 있습니다? –

+0

'composer dump-autoload'를 시도했는데,'autoload_psr4.php'가 맞습니다. 또한 composer.lock을 제거하고 다시 작성했습니다. 나는 아직도 자동로드를 사용할 수 없다. – Doc999tor

답변

0

경로 참조에서 후행 슬래시가 문제라고 생각합니다. 이에 composer.json의 자동로드 섹션을 변경합니다

"autoload": { 
    "psr-4": { 
    "Lib\\": "lib" 
    } 
} 

은 ... 다음 composer dump-autoload를 실행합니다.

+0

몇 번 시도해보십시오. 아무런 효과가 없습니다. Composer 문서에서는 후행 슬래시를 사용하는 것이 좋습니다. 어쨌든 다시 시도하겠습니다. 감사 – Doc999tor