0

Symfony 2で新しいアプリケーションをセットアップする方法については、 SymfonyStandardEditionの基本的な説明に従っています。

重要なのは、このガイドと他のすべてのガイドでは、Doctrine、Swiftmailer、Symfony自体などのサードパーティライブラリを配置するベンダーディレクトリが必要であると説明しています。

ただし、Zend Server PEARには、これらのライブラリのほとんどすべてがすでに付属しています。ご存知のように、pearupdateコマンドを使用してSymfonyとDoctrineのバージョンを更新することもできます。

問題は、PEARライブラリを効果的に使用し、ベンダーディレクトリを無視するように基本的なアプリケーションを設定するにはどうすればよいですか?

これは私のバージョンのapp/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',
));

// intl
if (!function_exists('intl_get_error_code')) {
    require_once __DIR__.'/../vendor/symfony/src/Symfony/Component/Locale/Resources/stubs/functions.php';

    $loader->registerPrefixFallbacks(array(__DIR__.'/../vendor/symfony/src/Symfony/Component/Locale/Resources/stubs'));
}

$loader->registerNamespaceFallbacks(array(
    __DIR__.'/../src',
));
$loader->register();

AnnotationRegistry::registerLoader(function($class) use ($loader) {
    $loader->loadClass($class);
    return class_exists($class, false);
});
AnnotationRegistry::registerFile(__DIR__.'/../vendor/doctrine/lib/Doctrine/ORM/Mapping/Driver/DoctrineAnnotations.php');

// Swiftmailer needs a special autoloader to allow
// the lazy loading of the init file (which is expensive)
require_once __DIR__.'/../vendor/swiftmailer/lib/classes/Swift.php';
Swift::registerAutoload(__DIR__.'/../vendor/swiftmailer/lib/swift_init.php');

ベンダーディレクトリからライブラリをロードするようにオートローダーが構成されていることは明らかです。ただし、pearパッケージに付属しているライブラリを使用したいと思います。それはどのように実装されますか?

4

1 に答える 1

0

app / autoload.phpを編集して、洋ナシが提供するパッケージを指すようにします。適切なバージョンを使用するように注意してください。おそらく、Symfonyで提供されるパッケージを使用してから、追加のライブラリへのパスを追加する方が安全です。

于 2012-03-12T14:40:40.907 に答える