2017-10-10 4 views
0

namespace에서 만든 프로젝트에 여러 라이브러리가 있습니다. 내 컨트롤러 내에서 그 중 하나를 사용해야 할 때 (MVC) 나는 require을 포함하고 있으며 동일한 네임 스페이스에있는이 라이브러리를 사용하고 있습니다. 내가 네임 스페이스에 합류 할 수 있는지 궁금 해서요. 내 autoload이 다른 파일에로드 된 다음 controller으로 전화하여 규칙을 계속 진행하십시오.내 네임 스페이스에 라이브러리 사용

실제 컨트롤러

namespace application\controller\rule; 

use application\controller\database; 
use application\model\object as object; 

require '/xxx/xxx/autoloadLibary1.php'; 
require '/xxx/xxx/autoloadLibary2.php'; 
require '/xxx/xxx/autoloadLibary3.php'; 
require '/xxx/xxx/autoloadLibary4.php'; 

class MyClass {} 

답변

0

나는 완전히 당신을 이해하지 않을 수 있습니다 생각하지만 난 당신이 당신이

require '/xxx/xxx/autoloadLibary1.php';이 이처럼

use application\xxx\xxx;으로 작곡가를 사용하는 데 사용할 생각하거나 대체로 작곡가 대신에 this을 사용하여 psr-4/psr-0 오토로더를 작곡가보다 안전하게 다운로드 할 수있는 링크를 사용하십시오. oser-file-loader-master/PackageLoader.php를 프로젝트에 추가하십시오.

use application\controller\database; 
use application\model\object as object; 

use application\xxx\xxx\autoloadLibary1; 
use application\xxx\xxx\autoloadLibary2; 
use application\xxx\xxx\autoloadLibary3; 
use application\xxx\xxx\autoloadLibary4; 

:이 문을 사용하는 경우,

{ 
    "autoload": { 
     "psr-4": { 
      "Namespace\\": [ 
      "./xxx/xxx/", 
      "./another-location" 
     ] 
     } 
    } 
} 

이제 단일 네임 스페이스에 두 개 이상의 위치를 ​​찾을 수

사용이

include __DIR__ . '/includes/PackageLoader.php'; 
$packageLoader = new PackageLoader\PackageLoader(); 
$packageLoader->load(__DIR__ . '/includes');//change where your composer.json file located 

사용이 PSR-4 자동 로딩 잘 작동 할 것입니다! 해피 코딩! 그것이 나를지지하는 데 도움이된다면 받아들이기만하면됩니다.

+0

왜 패키지 로더 라이브러리가 작곡가보다 안전하다고합니까? –

+0

아래 코드는 망가지지 않습니다. 어떤 사람이 프로그래밍을 조금만 알고있는 경우에는 공급 업체/autoload.php 내부에 서술문 만 필요하기 때문에 자동 로딩되는 것을 알 수 있습니다. 다른 한편으로는 패키지 로더가 기본적인 PHP 구조 (예 : api/api 같은 패키지)를 사용하는 반면, php 파일에 액세스하여 직접적으로 상상할 수 없으므로 사용하는 것이 좋습니다. 마지막 단어는 작곡가로부터 json 파일을 만들지 만 패키지 로더와 함께 사용하십시오. –

관련 문제