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

Wag*_*iro 8 php namespaces autoload symfony-1.4

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

Jan*_*šek 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();
    }

}
Run Code Online (Sandbox Code Playgroud)

3.注册所需的命名空间:
例如.我想加载类:

Pohon \工具\字符串\ utils的\ Slugify.

文件名必须是:

SF_ROOT_DIR/lib中/供应商/ Pohon/src目录/ Pohon /工具/字符串/ utils的/ Slugify.php

和注册的命名空间如下:

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


ggi*_*eda 5

你可以使用Composer,这很容易.只需将它安装在您的机器上(您可能已经从2015年开始)并在您的项目文件夹中运行:

composer init 
Run Code Online (Sandbox Code Playgroud)

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

require_once __DIR__.'/../vendor/autoload.php';
Run Code Online (Sandbox Code Playgroud)

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

  • Composer确实提供了一个ClassLoader,当您安装(使用Composer slang"require")软件包时,您只需要在上面添加`vendor/autoload.php`脚本.Composer负责映射已安装包中的名称空间,所有这些名称空间都是如此.你试过吗?我这样做,它的效果非常好. (2认同)