2014-04-17 3 views
4

작곡가를 사용하여 공급 업체 폴더에 bitbucket 리포지토리를 추가하고 싶습니다. 이것은 내가 내 composer.json에있는 것입니다 :autoload bitbucket repository + composer.json

{ 
    "require": { 
     "silex/silex": "~1.1", 
     "doctrine/dbal": "2.2.*", 
     "twig/twig" : "1.*", 
     "symfony/twig-bridge": "~2.3", 
     "twitter/bootstrap": "*", 
     "symfony/assetic-bundle": "2.1.*", 
     "leafo/lessphp": "*", 
     "silex/web-profiler": "~1.0", 
     "symfony/security": "~2.3", 
     "symfony/form": "~2.3", 
     "symfony/validator": "~2.3", 
     "symfony/config": "~2.3", 
     "symfony/translation": "~2.3", 
     "monolog/monolog": ">=1.0.0", 
     "symfony/yaml": "~2.3", 
     "jasongrimes": "dev-master" 
    }, 
    "autoload": { 
     "psr-0": { "": "src/" } 
    }, 
    "repositories": [ 
     { 
      "type": "package", 
      "package": { 
       "name": "jasongrimes", 
       "version": "dev-master", 
       "source": { 
        "url": "mybitbucketurl", 
        "type": "git", 
        "reference": "origin/master" 
       } 
      } 
     } 
    ] 
} 

내가 작곡가를 통해 추가 할 내의 bitbucket 저장소에 composer.json이 없습니다.

Fatal error: Class 'SimpleUser\UserServiceProvider' not found in app/bootstrap.php on line 82 

가 어떻게이 오토로더도 있는지 확인 할 수 있습니다 : 내 응용 프로그램을 실행할 때 지금 나는 다음과 같은 오류가?

+0

그것이 단지''reference' 내부 master' 수 없습니다해야 ? 그것은 GitHub 저장소를 내 공급 업체에 복제하는 것과 거의 동일합니다. –

+0

오류가 작곡가 또는 bitbucket과 관련이 없으므로 PHP는 클래스를로드 할 수 없습니다. –

+0

SimpleUser \ UserServiceProvider는 어디서 오는가? PSR-0에 자동로드하려고합니까? – Joseph

답변

17

패키지 저장소를 지정하면 패키지의 composer.json에있는 모든 세부 정보가 기본적으로 제공됩니다. 자동 로딩을 사용하려면 패키지의 autoload 속성을 지정해야합니다. 작곡가 설명서는 details on the autoload property입니다.

bitbucket 리포지토리가 PSR-0 또는 PSR-4를 준수하면 올바른 표준을 지정하고로드 할 클래스가 리포지토리에 저장되는 위치 만 지정하면됩니다. 예를 들어, PSR-4 및 수업으로 src/ 디렉토리에 저장 :

{ 
    "require": { 
     "jasongrimes": "dev-master" 
    }, 
    "repositories": [ 
     { 
      "type": "package", 
      "package": { 
       "name": "jasongrimes", 
       "version": "dev-master", 
       "source": { 
        "url": "mybitbucketurl", 
        "type": "git", 
        "reference": "origin/master" 
       }, 
       "autoload": { 
        "psr-4": { "": "src/" } 
       } 
      } 
     } 
    ] 
} 

그렇지 않으면, 당신은 클래스와 .php 또는 .inc 파일을 스캔 할 디렉토리 나 파일을 지정합니다 classmap를 사용할 수 있습니다. 예를 들어,로드하려고하는 클래스는 저장소에있는 파일 SimpleUser/UserServiceProvider.php에있는 경우 :

{ 
    "require": { 
     "jasongrimes": "dev-master" 
    }, 
    "repositories": [ 
     { 
      "type": "package", 
      "package": { 
       "name": "jasongrimes", 
       "version": "dev-master", 
       "source": { 
        "url": "mybitbucketurl", 
        "type": "git", 
        "reference": "origin/master" 
       }, 
       "autoload": { 
        "classmap": [ "SimpleUser/UserServiceProvider.php" ] 
       } 
      } 
     } 
    ] 
}