2015-01-08 6 views
0

composer autoload를 사용하여 다른 폴더의 클래스, 특성, 인터페이스를 가져올 수 있습니까?작곡가 자동로드 - 다른 폴더에서 클래스, 특성, 인터페이스를 가져 오는 방법은 무엇입니까?

그들에게 나는 다음과 같은 네임 스페이스를 사용 중 일부는

컨트롤러/Foo.php,

namespace MyNamespace; 
class Foo 
{ 
    public $message = 'hello Foo'; 
} 

모델/Boo.php

namespace MyNamespace; 
class Boo 
{ 
    public $message = 'hello Boo'; 
} 

의 index.php,

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

use \MyNamespace\Foo; 
$Foo = new Foo(); 
var_dump($Foo); 

오류,

Fatal error: Class 'MyNamespace\Foo' not found in C:...

composer.json,

{ 
    "autoload": { 
     "psr-0": { 
      "": "ext/", 
      "": "controller/", 
      "": "model/" 
     } 
    } 
} 

그래서 어떤 방법 내가 새로운 클래스가있을 때 작곡가의 자동로드를 다시 설치하지 않고있다, 많은 다른 폴더 (그것을 확장 할 수 있습니다) 많은 수업을 신선한 폴더에?

답변

1

네임 스페이스 및 폴더 구조를 표준화해야합니다. 서로 다른 폴더에 동일한 네임 스페이스가있는 경우 모두 자동로드하는 간단한 논리를 만드는 것이 어렵습니다.

namespace MyNamespace\Controller; 
class Foo 
{ 
    public $message = 'hello Foo'; 
} 

과 :

namespace MyNamespace\Model; 
class Boo 
{ 
    public $message = 'hello Boo'; 
} 

하고 composer.json에 : 같은 네임 스페이스에 다른 세그먼트를 사용하려고

{ 
    //.. 
    "autoload": { 
     "psr-4": { 
      "MyNamespace\\Model\\": "/path/to/model/folder/", 
      "MyNamespace\\Controller\\": "/path/to/controller/folder/" 
     } 
    } 
} 

이 설정 한 후, 전화 :

composer dump-autoload 
+0

답해 주셔서 감사합니다. 그것은 작동합니다! – laukok

관련 문제