composer の update、install、require、dump-autoload などを実行すると、突然黄色の非推奨通知を受け取り始めました。それは言う:
./foo/bar/utility/baz.php にある FooBarBaz クラスは、psr-4 自動読み込み標準に準拠していません。飛び越える。
Composer 2.0 より前では、通常は次のようになります:
非推奨の通知: ./foo/bar/Baz.php にある FooBarBaz クラスは、psr-4 自動ロード標準に準拠していません。 Composer v2.0 では自動ロードは利用できなくなります。 phar:///usr/local/bin/composer/src/Composer/Autoload/ClassMapGenerator.php:201
で
この通知または警告を受け取るのはなぜですか?この状況から抜け出し、Composer 2.0 に備えるには何が必要ですか?
2 件の回答
私の場合、このエラーは、何らかの理由で、アップグレードされた場所 ./foo/bar/baz.php に表示されるファイル ./foo/bar/utility/baz.php のコピーが原因で発生しました。後者を削除した後、誤解を招くエラーはなくなりました。小さい/大文字のパス名を見つめるのに数時間費やしましたが、最初はファイルに問題はありませんでした。
これはさまざまな理由で発生する可能性があります。
エラー メッセージ に注意を払うことが重要です。通常、問題の原因を指摘するのは 非常に正確です 。
パスケース最も一般的な原因は、エラー メッセージが示すように、
Bar.php パス名のさまざまなコンポーネントの大文字と小文字が完全修飾クラス名の大文字と小文字が一致しないことです。
は App\Bar\Baz と一致しません。
各パス コンポーネントが、それが所有する名前空間の大文字と小文字が一致するように、アプリケーションまたはパッケージを更新するだけです。
ファイル名とクラス名または名前空間の違い
パス名と名前空間を注意深く確認してください。たとえば、クラス (または名前空間) に
FooBar という名前を付ける場合がありますが、ディスク上のパスは「foo-bar」になります。あるいは、何らかの理由で、名前空間がファイルのパス名と正確に一致していない可能性があります。
これにより、通知/警告もトリガーされます。ファイルの名前を変更するか、クラス (または名前空間) の名前を変更する必要があります。
一般に、クラス名または名前空間名を変更するにはコードをリファクタリングして新しい名前に一致させる必要があるのに対し、パスを変更する場合は何もリファクタリングする必要がないため、パスまたはファイルを変更する方がはるかに簡単です。
ネストされた名前空間と欠落した宣言
次のものがあると仮定します:
リーリーおよびクラス
Dummy、 定義 src/Buzz 内:
リーリー
上記のメソッドは機能しますが、他のメソッドと同様に通知をスローします。正しいアプローチは次のとおりです:
影響を受けるクラスだけでなく、このクラスを使用またはインポートする他のファイルも変更する必要があります。 (たとえば、
use Fizz\Buzz\Buzz\Dummy; と宣言します)。
Hot Questions
Hot Tools
vc9-vc14 (32+64 ビット) ランタイム ライブラリ コレクション (以下のリンク)
phpStudy のインストールに必要なランタイム ライブラリのコレクションをダウンロードします。
VC9 32ビット
VC9 32 ビット phpstudy 統合インストール環境ランタイム ライブラリ
PHP プログラマー ツールボックスのフルバージョン
プログラマ ツールボックス v1.0 PHP 統合環境
VC11 32ビット
VC11 32ビットphpstudy統合インストール環境ランタイムライブラリ
SublimeText3 中国語版
中国語版、とても使いやすい
ホットトピック
20338
7
13531
4
11853
4
8836
17
8420
7





