多くの初心者は、名前空間やその適用方法を理解していない可能性があります。この記事では PHP 名前空間の使用方法について説明しますので、皆様のお役に立てれば幸いです。
1. PHP の名前空間とは何ですか?
名前空間とは何ですか? 「大まかに言えば、名前空間は物事をカプセル化する方法です。この抽象的な概念はさまざまな場所で見ることができます。たとえば、オペレーティング システムでは、ディレクトリは関連ファイルをグループ化するために使用されます。ディレクトリ内のファイルの場合、名前空間は、たとえば、ファイル foo.txt はディレクトリ /home/greg と /home/other に存在できますが、ディレクトリ / の外にある foo.txt ファイルにアクセスする場合、2 つの foo.txt ファイルは同じディレクトリに存在できません。 home/greg の場合、/home/greg/foo.txt を取得するには、ファイル名の前にディレクトリ名とディレクトリ区切り文字を置く必要があります。この原則は、名前空間としてのプログラミングの分野に適用されます。」——名前空間の概要
2 . PHP 名前空間を理解するにはどうすればよいですか?
本質的に、名前空間はコンテナです。クラス、関数、変数をこのコンテナに入れることができ、同じ名前空間内で相互に無条件にアクセスできます。名前空間の外側で、他の名前空間に含まれる項目を呼び出すには、他の名前空間を参照またはインポートする必要があります。
ネームスペースの概念は、シェルのファイルディレクトリと同じです。現在のディレクトリ内のファイル名によってすべてのファイルに直接アクセスできます。他のディレクトリ内のファイルにアクセスする必要がある場合は、相対パスまたは絶対パスを入力する必要があります。
参照メソッド:
namespace foo; class Foo { public function foo() { return \top\namespace\bar\Bar::fuck(); } }
インポートメソッド:
namespace foo; use top\namespace\bar\Bar; class Foo { public function foo() { return Bar::fuck(); } }
インポートは、ターゲットクラスを現在の名前空間にコピーすることと同じです。
3. PHP 名前空間の実際の用途は何ですか?
名前空間は、次の 2 つの問題を解決するために存在します:
1) ユーザーが作成したコードと PHP の内部クラス/関数/定数またはサードパーティのクラス/関数/定数の間の名前の競合。
2) ソース コードの読みやすさを向上させるために、非常に長い識別子名 (通常は最初の種類の問題を軽減するために定義される) のエイリアス (または短い) 名を作成します。
4. いくつかのヒント
1. 同じスペース内のクラスは互いに直接呼び出し、同じファミリーに属します。たとえば、Laravel の PageController クラスでは、Page::all() のようなコードを直接記述して Page モデルを呼び出すことができます。これは、どちらもトップレベルの名前空間の下にあるためです。
2. クラスがトップレベル以外の名前空間に存在する場合、そのクラスは同じ名前空間内の他のクラスを「参照」または「インポート」せずに呼び出すことしかできません。サブネームスペースはすべて別のネームスペース、別のコンテナであり、コンテナ間の関係以外に特別な関係はありません。
3. Laravel は自動読み込み (オートロード) にクラスマップメソッドを使用しますが、PHP には名前空間という高度な機能がありますが、これは単なる論理的な関係であり、require ファイルが依然として必要です。このクラスとファイル間の対応関係は /vendor/composer/autoload_classmap.php に存在し、composer dump-autoload が実行されるたびに再コンパイルされて生成されます。
関連する推奨事項:
2 01 必須の7つの学習フレームワーク初心者向け 準備済み: Thinkphp5 フレームワーク チュートリアルの名前空間の詳細な説明
以上がPHP名前空間の詳しい説明と応用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。