1. ネームスペースとは何か、およびネームスペースの定義方法
一般に、PHP プログラムのソース コード ファイルや同じリクエストに違いはありません。同じ名前のクラス名、定数名、または関数名を 2 つ以上持つことができます。この場合、プログラムは実行時にエラーを報告します。ただし、実際の多くの状況では、同じファイル内に同じ名前のクラス名、定数名、または関数名が 3 つ以上存在することは避けられません。この場合、名前空間を導入する必要があります。
例:
<?php function getUser () { return $username1; } function getUser () { return $username2; }
このようなプログラムは、実行時にエラーを報告します。そこで、次のように名前空間を導入します。
<?php namespace get1function getUser () { return $username1; } namespace get2 function getUser () { return $username2; }
名前空間の意味を理解するにはどうすればよいですか?上記のコードを例にすると、この PHP ファイルをフォルダー、その中の 2 つの関数を 2 つのファイルとして想像しますが、同じ名前の 2 つのファイルを同じフォルダー内に置くことはできないため、2 つのフォルダーに分割する必要があります。さまざまな名前で。これが名前空間の仕組みです。
特記事項:
名前空間は、クラス名、関数名、定数 (const で定義) に対してのみ有効です。
ファイルの先頭の名前空間の前に有効な文字を含めることはできません
2. 名前空間の使用方法?
たとえば、上で定義した get2 で getUser() を使用するにはどうすればよいでしょうか?
1) 関数 (または定数、クラス名) にアクセスする場合、名前空間が指定されていない場合は、近接原則が使用されます (現在の名前空間でのアクセス)。
2) では、指定された名前空間のコンテンツにアクセスするにはどうすればよいでしょうか?以下の通り:
\get1\getUser(); // 访问get1下的getUser()方法
3. マルチレベル名前空間と 3 つのアクセス方法
1) マルチレベル名前空間:
PHP プロジェクト ファイルがファイル フォルダーであると想像してください。そして、フォルダーの下には第 1 レベルのサブフォルダーがあり、第 1 レベルのサブフォルダーの下にはサブフォルダー (セカンダリ サブフォルダー) があります。同じことが名前空間にも当てはまります。名前空間の下には、名前空間がある場合があります。 -マルチレベル名前空間と呼ばれます。たとえば、thinkPHP の場合:
namespace app\Index\Controller;
これはマルチレベル名前空間です。アクセス方法は一般的な名前空間と同様です。
2) 名前空間の 3 つのアクセス方法 (相対パスと絶対パスと同様)
A. 非修飾名アクセス方法
B. 修飾名アクセス方法
C. 完全修飾名アクセス方法
<?php namespace app\get1 function getUser () { return $username1; } namespace get2 function getUser () { return $username2; } getUser(); // 非限定名称访问方式 \app\get1\getUser(); //完全限定名称访问方式,从根路径开始,类似绝对路径 app\get1\getUser(); //限定名称访问方式,不是从根路径开始,类似相对路径
4. ネームスペース導入メカニズム
1) スペース導入: キーワードの使用、注意: スペースに移動するときは、関数にアクセスするとき (またはインポートされた空間内の関数 (またはクラス、定数) にアクセスするために非修飾名を使用することはできません。
2) スペース要素の導入: キーワードの使用。注: 非修飾名を使用して導入およびアクセスできるのはクラスのみです。
その他の関連コンテンツについては、PHP 中国語 Web サイトをご覧ください: PHP ビデオ チュートリアル
以上がphp名前空間の原則の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。