2011-08-19 2 views
1

AppKernel.php에서와 마찬가지로 autoload.php에서 dev 및 prod의 차이점이없는 이유는 무엇입니까?생산에 필요한 장치에서 dev에 대한 번들을 분리합니다.

물론 환경을 확인할 수는 있지만 그 이유가 있는지 궁금합니다.

B/C 많은 번들이 개발에 유용합니다. 예를 들어 관리 인터페이스에 번들이 많이 필요합니다 (추측 컨데 ...). 하지만 제작 과정에서 이들을로드하고 싶지는 않습니다.

autoload.php :

use Symfony\Component\ClassLoader\UniversalClassLoader; 
use Doctrine\Common\Annotations\AnnotationRegistry; 

$loader = new UniversalClassLoader(); 
$loader->registerNamespaces(array(
    'Symfony'   => array(__DIR__.'/../vendor/symfony/src', __DIR__.'/../vendor/bundles'), 
    'Sensio'   => __DIR__.'/../vendor/bundles', 
    'JMS'    => __DIR__.'/../vendor/bundles', 
    'Doctrine\\Common' => __DIR__.'/../vendor/doctrine-common/lib', 
    'Doctrine\\DBAL' => __DIR__.'/../vendor/doctrine-dbal/lib', 
    'Doctrine'   => __DIR__.'/../vendor/doctrine/lib', 
    'Monolog'   => __DIR__.'/../vendor/monolog/src', 
    'Assetic'   => __DIR__.'/../vendor/assetic/src', 
    'Metadata'   => __DIR__.'/../vendor/metadata/src', 
)); 
$loader->registerPrefixes(array(
    'Twig_Extensions_' => __DIR__.'/../vendor/twig-extensions/lib', 
    'Twig_'   => __DIR__.'/../vendor/twig/lib', 
)); 

AppKernel.php :

public function registerBundles() 
    { 
     $bundles = array(
      new Symfony\Bundle\FrameworkBundle\FrameworkBundle(), 
      new Symfony\Bundle\SecurityBundle\SecurityBundle(), 
      new Symfony\Bundle\TwigBundle\TwigBundle(), 
      new Symfony\Bundle\MonologBundle\MonologBundle(), 
      new Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle(), 
      new Symfony\Bundle\DoctrineBundle\DoctrineBundle(), 
      new Symfony\Bundle\AsseticBundle\AsseticBundle(), 
      new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(), 
      new JMS\SecurityExtraBundle\JMSSecurityExtraBundle(), 
     ); 

     if (in_array($this->getEnvironment(), array('dev', 'test'))) { 
      $bundles[] = new Acme\DemoBundle\AcmeDemoBundle(); 
      $bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle(); 
      $bundles[] = new Sensio\Bundle\DistributionBundle\SensioDistributionBundle(); 
      $bundles[] = new Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle(); 
     } 

     return $bundles; 
    } 

답변

1

먼저 오토로더 독립 라이브러리이다. Symfony2와 완전히 다른 프로젝트에서 사용할 수 있습니다. 완전히 결합되지 않았기 때문입니다. 결합되지 않았기 때문에 그것은 불가 지론적이어야합니다.

둘째, 오토로더는 symfony1과 동일한 알고리즘을 가지고 있지 않으며 파일이있는 곳을 캐시하지 않습니다. 비행 중에 만들어지며,이 전에는 수많은 공연이 있습니다.)

+0

좋은 지적입니다! 예를 들어 오토로더와 같은 특정 구성 요소를 사용하는 방법에 대해 궁금합니다. 당신이 제안하는 것이 그 문제를 해결할 좋은 방법입니다. 문서는 현재 상태의 배포판을 표준으로 사용하는 경우에만 사용됩니다. 코드와 그 문서를 검사해야합니까? – Raffael

+0

구성 요소의 설명서가 부족한 경우에도 프레임 워크의 설명서가 상당히 광범위합니다. 그런 다음 Symfony2 Google 그룹과 코드를 지식의 원천으로 사용합니다. – futurecat

관련 문제