2013-03-02 5 views
1

를 사용하여 자동로드 클래스에 없습니다 같은 : 응용 프로그램/컨트롤러의 내부내가 보이는 프로젝트 구조가 작곡가

app/ 
app/models/ 
app/controllers/ 
app/views/ 
public/ 
vendor/ 
composer.json 

/IndexController.php, 나는이 :

require '../vendor/autoload.php'; 

use MyApp\Models\Test; 

class IndexController { 

    public function __construct() { 
     $t = new Test(); // can't be found 
    } 
} 

여기 내 composer.json입니다 :

composer.json을 업데이트 한 후 composer.phar 업데이트를 실행하여 생성 된 자동로드 파일을 업데이트합니다.

FYI - 어떤 유형의 MVC 프레임 워크도 사용하지 않습니다. 이것은 내가 소규모 프로젝트에 사용하고자하는 사용자 정의 가벼운 구조입니다.

내 모델 폴더의 클래스를 자동로드하여 컨트롤러에서 올바르게 사용할 수 있도록 프로젝트를 수정하려면 어떻게해야합니까?

답변

2

psr-0 자동 로딩을 사용하는 경우 psr-0 사양을 따라야합니다. 즉, "MyApp": "app/"을 지정하면 MyApp \ Models \ Test 클래스가 app/MyApp/Models/Test.php이어야합니다.

+0

psr-0을 사용하지 않고 기존의 폴더 구조로 작업하기 위해 composer.json을 수정하고 싶다고 말합니다. 내가 어떻게 그럴 수 있니? – doremi

+0

그런 다음'classmap' 자동 로딩을 사용하면 아무 것도 지원하지 않습니다. ' "autoload": { "classmap": [ "app /"]}'는 전체 app 디렉토리에서 .php/.inc 파일을 검색하고 any에 정의 된 모든 클래스를 찾습니다. 새로운 클래스를 추가 할 때'composer dump-autoload'를 다시 실행해야 발견하기 때문에 패키지 자체를 개발하는 것이 덜 편리합니다. – Seldaek

관련 문제