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

时间:2011-06-06 15:11:41

标签: php namespaces symfony-1.4 autoload

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

3 个答案:

答案 0 :(得分:10)

您可以在Symfony 1.4框架中使用Symfony2中的Autoloader。

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

  

SF_ROOT_DIR / LIB /供应商/ Symfony2的/ SRC / Symfony的/组件/类加载器/ UniversalClassLoader.php

     

SF_ROOT_DIR / LIB /供应商/ Symfony2的/ SRC / Symfony的/组件/类加载器/ 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.注册所需的命名空间:
例如。我想加载类:

  

Pohon \工具\字符串\的Utils \ Slugify。

文件名必须是:

  

SF_ROOT_DIR / LIB /供应商/ Pohon / SRC / Pohon /工具/字符串/的Utils / Slugify.php

和注册的命名空间如下:

  

Pohon => SF_ROOT_DIR / LIB /供应商/ Pohon / SRC

答案 1 :(得分:5)

您可以使用Composer,这非常简单。只需将其安装在您的计算机上(您可能已经在2015年开始)并在项目文件夹中运行:

composer init 

然后,您可以使用编辑器安装所需的所有软件包,并在ProjectConfiguration.class.php中包含此行:

require_once __DIR__.'/../vendor/autoload.php';

请注意,如果更改了默认的Symfony1.4目录结构,路径可能会有所不同。

答案 2 :(得分:1)

Symfony使用spl_autoload_register()函数注册自己的自动加载器(sfAutoload)。

您可以在Project / Application / Plugin的initialize()函数中注册自己的处理程序。 (以适用者为准)。

例如,这也是Swift_Mailer插件的作用:它在需要时注册自己的自动加载器。