Как настроить приложение Symfony Standard Edition без поставщика, но с PEAR - PullRequest
0 голосов
/ 12 марта 2012

Я следую базовому описанию Symfony Standard Edition о том, как настроить новое приложение с Symfony 2.

Дело в том, что это и все другие руководства объясняют, что яМне нужно иметь каталог vendors, куда я должен поместить библиотеки третьей части, такие как Doctrine, Swiftmailer и Symfony.

Однако Zend Server PEAR уже поставляется практически со всеми этими библиотеками.Как вы знаете, я даже могу обновить свои версии Symfony и Doctrine с помощью команды pear update.

Вопрос в том, как мне настроить базовое приложение для эффективного использования моих библиотек PEAR и игнорирования каталога vendors?

Это моя версия 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');

Понятно, что автозагрузчик настроен на загрузку библиотек из каталога vendor.Однако я хочу использовать библиотеки, входящие в комплект груши.Как это будет реализовано?

1 Ответ

0 голосов
/ 12 марта 2012

Просто отредактируйте app / autoload.php, чтобы он указывал на доставленные груши.Будьте осторожны, чтобы использовать правильные версии.Возможно, будет безопаснее просто использовать пакеты, поставляемые с Symfony, а затем добавлять пути к любым дополнительным библиотекам.

...