在 Symfony 2.0.x 中自动加载非 PSR0 库


Autoloading non-PSR0 libraries in Symfony 2.0.x

Symfony 2.0 Autoloader 期望它可以处理的库在自动加载文件时遵循PSR0PEAR标准。如果你有一个不遵循这两个标准中的任何一个的旧库(在我的例子中,类文件被命名为name.class.php),你将如何处理这些库的自动加载?

Symfony 2.1这很容易,因为作曲家支持classmaps并且可以加载这种类型的库,但是您将如何在Symfony 2.0.x中做到这一点?

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();