Автозагрузка не-PSR0 библиотек в Symfony 2.0.x

Symfony 2.0 Autoloader ожидает, что библиотеки, которые он может обработать, следуют PSR0 или же PEAR стандартный при автоматической загрузке файлов. Если у вас есть старая библиотека, которая не соответствует ни одному из этих двух стандартов (в моем случае файлы классов называются как name.class.php), как бы вы справились с автоматической загрузкой этих библиотек?

В Symfony 2.1 это легко, так как композитор поддерживает classmaps и может загружать этот тип библиотек, но как бы вы это сделали в Symfony 2.0.x?

1 ответ

Решение

Внутри app/autoload.phpсоздать экземпляр MapClassLoader:

use Symfony\Component\ClassLoader\MapClassLoader;
use Symfony\Component\ClassLoader\UniversalClassLoader;

// Create default PSR-0 autoloader
$loader = new UniversalClassLoader();
$loader->registerNamespaces(array(
    'Symfony' => array(__DIR__.'/../vendor/symfony/src', __DIR__.'/../vendor/bundles'),
    // ...
));

// Create map autoloader
$mapLoader = new MapClassLoader(array(
    'MyComponent' => __DIR__.'/../library/mycomponent.class.php',
    // ...
));

// Other configurations
// ...

// Register autoloaders
$loader->register();
$mapLoader->register();
Другие вопросы по тегам