php 名前空間 の最も明確な機能の 1 つは、PHP で 2 つの関数またはクラスが同じ名前を持つことを許可されておらず、重複した名前の問題を解決することです。そうしないと、致命的なエラーが発生します。前の章では、PHP 名前空間とは について紹介しました。 PHP 公式 Web サイトでは、これを明確に定義し、視覚的に説明しています。以下に、PHP 公式 Web サイトから直接コピーした文章を示します。 広い意味では、名前空間は物事をカプセル化する方法です。この抽象的な概念はさまざまな場所で見られます。たとえば、ディレクトリはオペレーティング システムで関連ファイルをグループ化するために使用され、ディレクトリ内のファイルの名前空間として機能します。たとえば、ファイル foo.txt はディレクトリ /home/greg と /home/other に同時に存在できますが、2 つの foo.txt ファイルが同じディレクトリに存在することはできません。さらに、ディレクトリ /home/greg の外にある foo.txt ファイルにアクセスする場合、/home/greg/foo.txt を取得するには、ファイル名の前にディレクトリ名とディレクトリ区切り文字を置く必要があります。この原理をプログラミングの分野に適用したのが、名前空間の概念です。
php名前空間へのnamespaceキーワードの導入は、phpのオブジェクト指向プログラミングプロセスで発生するさまざまな「トラブル」を解決するためのものであり、具体的なトラブルは次のとおりです。 PHP 内のクラス/関数/定数、またはサードパーティのクラス/関数/定数間の名前の競合。
問題 1 を軽減するために、さまざまなクラスを記述する場合、通常は長いクラス名が使用されたり、異なる機能を実装するクラスに名前のプレフィックス (またはサフィックス) が追加されます。
マジック関数 __autoload が使用されず、各クラスが排他的な PHP ファイルを占有する場合、異なるクラスを呼び出すために、これらのクラスを使用する他の PHP ファイルの先頭にさらに多くのインクルードが書き込まれます (または require または require_once ) 声明。
最初に名前空間を作成します。同じスクリプト ファイル内に複数の名前空間を作成できます。
<?php //创建一个名为'Article'的命名空间 namespace Article; //此Comment属于Article空间的元素 class Comment { } //创建一个名为'MessageBoard'的命名空间 namespace MessageBoard; //此Comment属于MessageBoard空间的元素 class Comment { } ?>
異なる空間間で他の要素を直接呼び出すことはできません。名前空間構文を使用する必要があります。 サンプルコードは以下の通りです:
<?php namespace Article; class Comment { } namespace MessageBoard; class Comment { } //调用当前空间(MessageBoard)的Comment类 $comment = new Comment(); //调用Article空间的Comment类 $article_comment = new \Article\Comment(); ?>
メッセージボードスペースの記事スペースでCommentクラスを呼び出す際に、ファイルパスのような構文が使用されていることがわかります:
スペース名要素名に加えてクラス また、関数と定数の使い方は同じです。以下では、2 つのスペースに新しい要素を作成し、その値をメッセージボード スペースに出力します。 コードは次のとおりです:
<?php namespace Article; const PATH = '/article'; function getCommentTotal() { return 100; } class Comment { } namespace MessageBoard; const PATH = '/message_board'; function getCommentTotal() { return 300; } class Comment { } //调用当前空间的常量、函数和类 echo PATH; //message_board echo getCommentTotal(); //300 $comment = new Comment(); //调用Article空间的常量、函数和类 echo \Article\PATH; //article echo \Article\getCommentTotal(); //100 $article_comment = new \Article\Comment(); ?>
次の結果が得られます:
/message_board300/article100
1.「
》
2. ビデオチュートリアル: 名前空間: 私たちは同じ名前と同じ性別を持っていますが、異なる時間と空間に属しています
3. PHP プログラミングの入門からチュートリアルまでの完全なセット。マスター
以上がphp名前空間の役割を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。