[Laravel] Composerのautoload定義を見る

カテゴリ: Laravel, 未分類

Laravelでcomposerを利用したクラスのオートロードがうまくいかない場合、下記のワンライナーでComposerが持っているクラスマップをダンプできます。

% ./artisan tinker
Psy Shell v0.10.5 (PHP 7.3.11 — cli) by Justin Hileman

>>> echo json_encode((require "vendor/autoload.php")->getPrefixesPsr4(), JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES);
{
    "voku\\": [
        ".../app/vendor/composer/../voku/portable-ascii/src/voku"
    ],
    "phpDocumentor\\Reflection\\": [
        ".../app/vendor/composer/../phpdocumentor/reflection-common/src",
        ".../app/vendor/composer/../phpdocumentor/reflection-docblock/src",
        ".../app/vendor/composer/../phpdocumentor/type-resolver/src"
    ],
    "XdgBaseDir\\": [
        ".../app/vendor/composer/../dnoegel/php-xdg-base-dir/src"
    ],
    "Whoops\\": [
        ".../app/vendor/composer/../filp/whoops/src/Whoops"
    ],

    ...

作ったネームスペースがこの一覧にない場合、下記の作業漏れである場合があります。

composer.jsonのautoload定義を書き忘れている。例えばpackages/Acme/Foo.phpに"namespace Acme"のFooクラスを生成する場合、下記の定義が必要です。

    "autoload": {
        "psr-4": {
            "App\\": "app/",
            "Database\\Factories\\": "database/factories/",
            "Database\\Seeders\\": "database/seeders/"

            "Acme\\": "packages/Acme/",
        }
    },

autoloadした後にコマンドを実行し忘れている。composer.jsonでautoloadを変更した場合、composer dumpautoloadコマンドを実行します。

%  composer dumpautoload

Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover --ansi
...

Generated optimized autoload files containing 4612 classes

Amazonでおトクに買い物する方法
AmazonチャージでポイントGET


Amazonは買いもの前にAmazonギフト券をチャージしてポイントをゲットしないと損!

こちらもおススメ

コメントを残す

メールアドレスが公開されることはありません。