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


Loading namespaced classes with Symfony 1.4's autoloader?

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

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

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/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''Tools''String''Utils''Slugify。

文件名必须为:

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

和注册的命名空间如下:

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

您可以使用Composer,而且非常简单。只需将其安装在你的机器上(你可能已经在2015年了),然后在你的项目文件夹中运行:

composer init 

然后,您可以使用composer安装所有想要的软件包,并在ProjectConfiguration.class.php:中只包含这一行

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

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

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

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

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