ホームページ >バックエンド開発 >PHPチュートリアル >ネームスペースとは何ですか? PHP 名前空間の基本的なアプリケーション共有
名前空間とは何ですか?
PHP で宣言された関数、クラス、定数の名前は、同じ実行で繰り返すことはできません。そうしないと、致命的なエラーが発生します。一般的な解決策は、プレフィックスを合意することです。たとえば、プロジェクト開発中に、User モジュールのコントローラーとデータ モデルの両方で同じ User クラスを宣言することはできません。クラス名の前にそれぞれの関数プレフィックスを追加する必要があります。コントローラー内の User クラスには ActUser クラス、データ モデル内の User クラスには ModelUser クラスという名前を付けることができます。この問題はプレフィックスを追加することで解決できますが、名前が長すぎるため、開発中にさらに多くのコードを記述することになります。 php5.3 以降のバージョンでは、非常に成熟した関数 ----- 名前空間を使用するために、他の多くの高級言語 (Java、C# など) が追加されています。その最も明確な目的の 1 つは、問題を解決することです。重複した名前。名前空間はコードをさまざまな領域に分割し、各領域の定数、関数、クラスの名前は相互に影響しません。
注: PHP5.3 以降、定数が変更されました。const キーワードを使用してクラスの外で定数を宣言できます。 const と define はどちらも定数の宣言に使用されますが、名前空間では、define はグローバルに動作するのに対し、const は現在の空間に対して動作します。ここでいう定数とは、const で宣言した定数を指します。
ネームスペースの役割と機能は非常に強力で、プラグインや一般ライブラリを作成するときに名前の重複を心配する必要がなくなりました。ただし、プロジェクトがある程度進み、名前空間を追加して名前の重複の問題を解決する必要がある場合、名前のリファクタリング以上の作業負荷がかかります。したがって、命名規則はプロジェクトの最初から綿密に計画し、指定する必要があります。名前空間の基本的な応用
デフォルトでは、PHP の定数、クラス、関数のすべての宣言はグローバル空間に配置されます。 php5.3 以降のバージョンでは個別のスペース宣言があり、異なるスペースにある同じ名前が競合することはありません。独立した名前空間は、namespace キーワードを使用して宣言されます。
コードは次のとおりです:
<?php //声明这段代码的命名空间 namespace abc; // 这里是代码 ?>注: 名前空間は PHP スクリプトの先頭に記述する必要があり、最初の PHP 命令である必要があります。その前に非 PHP コード、HTML、またはスペースを含めることはできません。名前空間。 コードの名前空間 abc から始まり、次の名前空間が表示されるかスクリプトが終了するまで、この空間に abc という名前を付けます。 同じコードに名前空間を指定したり、複数の名前空間を定義したりすることはできません。複数の名前空間が一緒に使用されている場合、最後の名前空間のみが認識されますが、同じファイル名前空間コード内で異なる名前空間を定義することはできます。
コードは次のとおりです:
<?php namespace project1; class user{ //此 user 属于project1 空间的类 } namespace project2; class user{ //此 user 属于project2 空间的类 } // 上面的替代语法,另一种声明方法 namespace project3{ //命名空间 project3 下的代码 } ?>上記のコードは実行可能であり、異なる名前空間で個別のユーザー クラスを使用しますが、そのようなコードが読み取れるように、独立したファイルごとに名前空間を 1 つだけ定義することをお勧めします。最高の。同じ空間内では、自分の空間内の任意の要素を直接呼び出すことができますが、異なる空間間で他の空間内の要素を直接呼び出すことはできません。ネームスペース構文を使用する必要があります。コードは次のとおりです。
<?php namespace project1; const test = "这是一个常量<br>"; function demo(){ echo "这是一个函数<br>"; } class user { function fun(){ echo "这是一个 user 类"; } } echo test; //在自己的命名空间中直接使用常量 demo(); //在自己的命名空间中直接调用函数 /*************** project2 ******************/ namespace project2; const test2 = "这也是一个常量<br>"; echo test2; \project1\demo(); //调用 project1 空间中的 demo() $user = new\project1\user(); //使用 project1 空间的类实例化对象 $user->fun(); ?>上記の例では、project1 と project2 の 2 つのスペースが宣言されており、自分のスペースで project1 の要素を project2 で呼び出すときに、このスペースで宣言された要素を直接呼び出すことができます。ファイル パス
スペース名 要素名 に似た A 構文を使用します。使用法はクラス、関数、定数でも同じです。
【関連チュートリアル】1.「php.cn Dugu Jiijian (4) - PHP ビデオチュートリアル」
2. ビデオチュートリアル:名前空間: 私たちは同じ名前、同じ性別ですが、私たちは属しています。異なる時間と空間へ
PHP プログラミングの入門からマスターまでの完全なチュートリアル セット
以上がネームスペースとは何ですか? PHP 名前空間の基本的なアプリケーション共有の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。