本文介绍了使用 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 的 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/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.

文件名必须是:

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

这篇关于使用 Symfony 1.4 的自动加载器加载命名空间类?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-06 01:11