2011-08-19 33 views
1

爲什麼在AppoloV.php中autoload.php中沒有dev和prod的區別?分離開發包與您在生產中需要的軟件包

我可以檢查環境,當然,但我想知道是否有這個原因。

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無關的完全不同的項目中使用它,因爲它完全不耦合。由於它不耦合,它必須env不可知論。

其次,自動裝載機沒有與symfony1相同的算法,也不緩存文件所在的位置。它是在飛行中製作的,在這之前你會得到大量的其他演出問題;)

+0

這是一個很好的觀點!我想知道如何使用像autoloader這樣的特定組件。你認爲什麼是解決這個問題的好方法。該文檔僅針對原始分佈的標準用法。我是否必須檢查代碼及其文檔? – Raffael

+0

即使組件文檔缺乏,該框架的文檔也相當廣泛。然後,您將Symfony2谷歌組和代碼作爲知識來源。 – futurecat

相關問題