且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

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

更新时间:2023-09-09 12:52:58

您可以在 Symfony 1.4 框架中使用来自 Symfony2 的 Autoloader.

You can use Autoloader from Symfony2 in Symfony 1.4 framework.

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

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:

PohonToolsStringUtilsSlugify.

PohonToolsStringUtilsSlugify.

文件名必须是:

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