ホームページ  >  記事  >  バックエンド開発  >  php名前空間の役割を詳しく解説

php名前空間の役割を詳しく解説

伊谢尔伦
伊谢尔伦オリジナル
2017-05-22 11:18:154097ブラウズ

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. 問題 1 を軽減するために、さまざまなクラスを記述する場合、通常は長いクラス名が使用されたり、異なる機能を実装するクラスに名前のプレフィックス (またはサフィックス) が追加されます。

  2. マジック関数 __autoload が使用されず、各クラスが排他的な PHP ファイルを占有する場合、異なるクラスを呼び出すために、これらのクラスを使用する他の PHP ファイルの先頭にさらに多くのインクルードが書き込まれます (または require または require_once ) 声明。

  3. 最初に名前空間を作成します。同じスクリプト ファイル内に複数の名前空間を作成できます。

コードは次のとおりです:

<?php
//创建一个名为&#39;Article&#39;的命名空间
namespace Article;
//此Comment属于Article空间的元素
class Comment { }
//创建一个名为&#39;MessageBoard&#39;的命名空间
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 = &#39;/article&#39;;
function getCommentTotal() {
 return 100;
}
class Comment { }
namespace MessageBoard;
const PATH = &#39;/message_board&#39;;
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.「

php.cn Dugu Jiijian (4)-php」ビデオチュートリアル

2. ビデオチュートリアル: 名前空間: 私たちは同じ名前と同じ性別を持っていますが、異なる時間と空間に属しています

3. PHP プログラミングの入門からチュートリアルまでの完全なセット。マスター

以上がphp名前空間の役割を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。