web-dev-qa-db-ja.com

Laravel / Composer:非複合名のuseステートメント

私のlaravelプロジェクトでは、CustomerLinksというモデルを作成しました。モデルはapp/modelsフォルダにあります。Mycomposerファイルには以下のオートロード:

"autoload": {
    "classmap": [
        ...
        "app/models",
        ...

    ],
    ...
},

そして、useを参照するExtendedUserControllerにCustomerLinksステートメントがあります。

<?php

...
use CustomerLinks;
...

class ExtendedUserController extends UserController {

composerファイルのautoloadプロパティがクラスマップにapp/modelsを持っているため、名前空間接頭辞なしでuse CustomerLinksを使用できるはずです。

これは機能しますが、ExtendedUserControlerに変更を加えてブラウザをリロードすると、常にエラーが発生します。

The use statement with non-compound name 'CustomerLinks' has no effect

エラーはuse CustomerLinks行拡張ユーザーコントローラーを指しています。

composer dump-autoloadを実行すると、すべてが正常に機能しますが、パターンに従う必要がある場合は非常にイライラします

変更を行う->自動ロードをダンプする->ブラウザを更新する->繰り返す

エラーに対処する方法はありますか?

18
Chris Schmitz

名前空間内にいない(つまり、ルート名前空間にいる)場合、使用するクラスも名前空間にない(つまり、ルート名前空間にもある)場合、useを使用しても意味がありません。 、コードがなくても同じように機能するためです。このステートメントでは何もインポートしていません。

Composerはこれとは何の関係もなく、他のオートローディングも関係ありません。 PHPはそれ自体で機能します。

29
Sven