使用Symfony 1.4的自动加载器加载命名空间类吗?

问题描述:

如何在Symfony 1.4中为自动加载器类功能注册名称空间(使用PHP 5.3)(例如 Symfony 2.0 )?

How to register namespaces (with PHP 5.3) in the Symfony 1.4 for the autoloader class feature (like the Symfony 2.0)?

您可以在Symfony 1.4框架中使用来自Symfony2的自动加载器.

You can use Autoloader from Symfony2 in Symfony 1.4 framework.

1.将Symfony2类加载器复制到Symfony 1.4沙箱项目的供应商目录中:

SF_ROOT_DIR/lib/vendor/Symfony2/src/Symfony/Component/ClassLoader/UniversalClassLoader.php

SF_ROOT_DIR/lib/vendor/Symfony2/src/Symfony/Component/ClassLoader/UniversalClassLoader.php

SF_ROOT_DIR/lib/vendor/Symfony2/src/Symfony/Component/ClassLoader/ApcUniversalClassLoader.php

SF_ROOT_DIR/lib/vendor/Symfony2/src/Symfony/Component/ClassLoader/ApcUniversalClassLoader.php

2.修改您的SF_ROOT_DIR/config/ProjectConfiguration.class.php文件,如下所示:

require_once dirname(__FILE__) . '/../lib/vendor/symfony/lib/autoload/sfCoreAutoload.class.php';
require_once dirname(__FILE__) . '/../lib/autoload/sfClassLoader.class.php';
sfCoreAutoload::register();

class ProjectConfiguration extends sfProjectConfiguration {

    public function setup() {
        $this->namespacesClassLoader();
        $this->enablePlugins('sfDoctrinePlugin');
    }

    public function namespacesClassLoader() {
       if (extension_loaded('apc')) {
           $loader = new ApcUniversalClassLoader('S2A');
       } else {
           $loader = new UniversalClassLoader();
       }
       $loader->registerNamespaces(array(
          'Pohon' => __DIR__ . '/../lib/vendor/Pohon/src'));
       $loader->register();
    }

}

3.注册所需的名称空间:
例如.我要加载课程:

3. Register desired namespaces:
eg. I want to load class:

Pohon \ Tools \ String \ Utils \ Slugify.

Pohon\Tools\String\Utils\Slugify.

文件名必须为:

SF_ROOT_DIR/lib/vendor/Pohon/src/Pohon/Tools/String/Utils/Slugify.php

SF_ROOT_DIR/lib/vendor/Pohon/src/Pohon/Tools/String/Utils/Slugify.php

和注册的名称空间如下:

and registered namespace as follows:

Pohon => SF_ROOT_DIR/lib/vendor/Pohon/src

Pohon => SF_ROOT_DIR/lib/vendor/Pohon/src