ネームスペースは PHP 5.3 での最も重要な変更です。C# および Java 開発者はこの用語によく慣れており、最終的に PHP アプリケーションの構造をより良いものに変更することができます。
なぜ名前空間が必要なのでしょうか?
PHP コード ベースが大きくなるにつれて、以前に定義した関数やクラス名を変更するリスクが高まります。コードに 2 つ以上のサードパーティ コンポーネントやプラグインを追加しようとすると、問題はさらに深刻になります。 set は「Database」クラスと「User」クラスを実装しますか?
これまでの唯一の解決策は、長いクラス/関数名を使用することでした。たとえば、WordPress では各クラス名と関数名の前に接頭辞「WP_」が使用され、Zend Framework では非常に説明的な命名規則が使用されるため、クラス名が非常に長くなります。 、たとえば:
Zend_Search_Lucene_Analysis_Analyzer_Common_Text_CaseInsensitive
名前の競合の問題は、名前空間を使用して解決でき、PHP の定数、クラス、関数を名前空間ライブラリに結合できます。
名前空間を定義するにはどうすればよいですか?
デフォルトでは、PHP が名前空間をサポートする前と同様に、すべての定数、クラス、関数名はグローバル空間に配置されます。
PHP ファイルの先頭にあるキーワード namespace を使用して名前空間を定義できます。これは最初のコマンドである必要があり (declare を除く)、その前に非 PHP コード、HTML、またはスペースを含めることはできません。例:
< ?php
この行の下のコードは MyProject 名前空間に割り当てられます。名前空間をネストしたり、同じコード ブロックに複数の名前空間を定義したりすることはできませんが、別の名前空間コードを定義することはできます。同じファイル内に次のように記述します:
< ?php
サブネームスペース
PHP では、
のように、ライブラリをバックスラッシュ文字 () で区切ってサブネームスペースを分割できるように、階層的なネームスペースを定義できます。◆MyProjectSubName
◆MyProjectDatabaseMySQL
◆会社名MyProjectLibraryCommonWidget1
名前空間コード
を呼び出すlib1.php ファイルでは、AppLib1 名前空間を使用して、次のような定数、関数、クラスを定義します。
lib1.php
< ?php
< ?php
App\Lib1\MYCONST
完全合格名称可以变得很长,定义长名称,如App-Lib1-MyClass,有一些明显的好处。