4

これはより表面的な質問です...

クラスを自動ロードするために、既存のプロジェクトで composer.phar を使用しています。

これは、 Acmecomposer.jsonという名前の私のプロジェクトのスニペットの例です。

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

私のファイル構造の一部は次のようになります。

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

私の場合、「modules/mail」フォルダーに固執する必要があり、名前を変更できません。

基本的にこれは機能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- autoloaders-psr-0-vs-psr-4/

于 2013-12-25T15:26:46.433 に答える
1

PSR-0 標準に準拠したくない場合は、classmap 生成を使用できます (これは、再検討する必要があります)。http://getcomposer.org/doc/04-schema.md#autoloadのリファレンスを参照してください。

于 2012-09-16T15:52:56.257 に答える