PHP 名前空間と use ステートメントの難題
PHP では、名前空間はクラスを編成するための論理構造を提供し、use ステートメントは短縮のためのエイリアスを有効にします。名前空間参照。ただし、名前空間と use ステートメントの両方を効果的に使用しようとすると、よくある落とし穴が発生します。
「致命的なエラー: クラス 'ShapeShape' が見つかりません。」というエラーが発生するシナリオを詳しく見てみましょう。これは、名前空間を宣言してから use Shape を使用しようとすると発生します。 state.
use の使用法を理解する
use 演算子は、名前空間、クラス、またはインターフェイスにエイリアスを割り当てます。その主な目的は、これらのエンティティへの参照を短縮することです。たとえば、次のコードは、MyFullNamespace 名前空間のエイリアス Namespace を作成します。
<code class="php">use My\Full\Namespace as Namespace;</code>
これで、MyFullNamespaceFoo を NamespaceFoo として参照できるようになります。
名前空間の重複を避け、ステートメントを使用する
あなたの場合、3 つのファイルすべて (ShapeInterface.php、Shape.php、Circle.php) で名前空間 Shape を宣言し、Shape を使用します。ステートメントは Shape 名前空間の使用を試みます。ただし、Circle.php には Shape.php と ShapeInterface.php も含まれています。この重複によりエラーが発生します。
代わりに自動ロードを使用する
この問題を回避するには、use ステートメントの代わりに自動ロードを使用することを検討してください。オートロードには、クラスの存在をチェックし、見つからない場合はそれをロードする関数の登録が含まれます。オートローダーを登録すると、include ステートメントの必要性がなくなり、インスタンス化時にクラスが自動的にロードされるようにすることができます。
一般的に使用されるオートローダーの実装の 1 つは PSR-4 命名規則に従っており、名前空間を直接マッピングする必要があります。ファイルシステムのディレクトリ構造
以上が## PHP で名前空間と `use` ステートメントを使用すると、「致命的なエラー: クラス \'Shape\\Shape\' が見つかりません」が発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。