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

发布于 2024-11-14 06:05:04 字数 54 浏览 4 评论 0原文

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

How to register namespaces (with PHP 5.3) in the Symfony 1.4 for the autoloader class feature (like the Symfony 2.0)?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

没有心的人 2024-11-21 06:05:04

您可以在 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

并注册命名空间如下:

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

You can use Autoloader from Symfony2 in Symfony 1.4 framework.

1. Copy Symfony2 classloaders to vendor directory of your Symfony 1.4 sandbox project:

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. Modify your SF_ROOT_DIR/config/ProjectConfiguration.class.php file as follows:

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. Register desired namespaces:

eg. I want to load class:

Pohon\Tools\String\Utils\Slugify.

Filename must be:

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

网名女生简单气质 2024-11-21 06:05:04

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

composer init 

然后您可以使用 Composer 安装您想要的所有软件包,并将这一行包含在您的 ProjectConfiguration.class.php< /code>:

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

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

You can use Composer and it's very easy. Just install it on your machine (you probably have already since it's 2015 now) and run in your project folder:

composer init 

You can then install all the packages you want with composer and include just this line in your ProjectConfiguration.class.php:

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

Note that paths may differ if you changed the default Symfony1.4 directory structure.

桃气十足 2024-11-21 06:05:04

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

您可以在项目/应用程序/插件的 initialize() 函数中注册自己的处理程序。 (以适用者为准)。

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

Symfony uses the spl_autoload_register() function to register its own autoloader (sfAutoload).

You can register your own handler in the initialize() function of your Project/Application/Plugin. (whichever applies).

This is, for example, also what the Swift_Mailer plugin does: it registers its own autoloader when needed.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文