4

这是一个更美观的问题......

我在现有项目中使用 composer.phar 来自动加载我的类。

composer.json这是我名为Acme的项目的示例片段:

{
    "autoload": {
         "psr-0": {
            "Acme\\Mail": "modules/mail/src/",
         }
    }
}

我的文件结构的一个部分是这样的:

app.php
composer.phar
vendor/
modules/
    mail/
        src/
            Acme/
                Mail.php (contains Acme\Mail\Mail.php)

在我的情况下,我必须坚持使用文件夹“模块/邮件”并且不能重命名它们。

基本上这是可行的,但我必须在Acme下面创建一个额外的文件夹,src它有点难看。

如果我想在我的邮件文件夹中省略最高的命名空间部分,那么必须如何定义自动加载,Acme所以它看起来像这样:

app.php
composer.phar
vendor/
modules/
    mail/
        src/
            Mail.php (contains Acme\Mail\Mail.php)

我仍然可以在 php 文件中使用它:

use Acme\Mail;
$mail = new Mail();

或者那不可能?

4

2 回答 2

5

PSR4 将允许这成为可能。请参阅:https ://github.com/php-fig/fig-standards/blob/master/proposed/psr-4-autoloader/psr-4-autoloader.md和http://www.sitepoint.com/battle-自动加载器-psr-0-vs-psr-4/

于 2013-12-25T15:26:46.433 回答
1

如果您不想遵循 PSR-0 标准(您真的应该重新考虑这样做),您可以使用类映射生成。请参阅http://getcomposer.org/doc/04-schema.md#autoload上的参考资料

于 2012-09-16T15:52:56.257 回答