PHP の名前空間は、名前の競合を避けるために名前を再利用することで項目をカプセル化する C++ の名前空間に似ています。また、多くの状況で抽象的な概念として見なされます。これにより、致命的なエラーを受け取ることなく、別の名前空間で同じクラス、インターフェイス、関数、または定数関数を再宣言することができます。この名前空間は、通常の PHP コードを保持する階層的にラベル付けされたコード ブロックです。これは有効な PHP コードで構成されています。さらに、クラス、関数、定数、インターフェイスなどのコード タイプにも影響します。名前空間はキーワード namespace を使用して宣言されます。
広告 このカテゴリーの人気コース PHP 開発者 - 専門分野 | 8コースシリーズ | 3 つの模擬テスト無料ソフトウェア開発コースを始めましょう
Web 開発、プログラミング言語、ソフトウェア テスト、その他
構文:
namespace sample;
ここでは、名前空間のサンプルが宣言されています。
他の PHP 識別子と同様に、名前空間もいくつかのルールに従う必要があります。つまり、名前空間はアンダースコアまたは文字で始まり、その後に文字、アンダースコア、または数字が続く必要があります。
ネームスペースを、ドレスやアクセサリーなどのすべてのアイテムを保管できる食器棚として想像してみましょう。各人には、自分のアイテムを保管できる個別の食器棚があります。各人の食器棚を識別するために、混乱が起こらないように、それぞれにラベルを付けることができます。以前は、プログラマは定数、クラス、関数内でアンダースコアを使用してコード ベースを区切っていました。これは、全員のアイテムにラベルを付けて大きな食器棚に保管するのと似ています。整理整頓しても効率は上がりません
この状況では、名前空間の概念が現れます。同じクラス、インターフェイス、関数、定数を異なる名前空間で宣言しても、致命的なエラーは発生しません。基本的に、名前空間は、通常の PHP コードを保持する階層的にラベル付けされたコード ブロックです。
すでに述べたように、PHP のネームスペースは名前の競合を避けるために名前を再利用することで項目をカプセル化します。
たとえば、以下のような PHP プログラムについて考えてみましょう。
コード:
<?php namespace sample ; function func() { echo ' Never give up! Keep trying . . . ' ; } // Resolves to the function func() ; ?>
関数 func が存在し、コードの実行時にテキストを出力することがわかります。
PHP コード ライブラリのサイズが大きくなると、すでに宣言されているクラス名や関数が意図せず再利用される可能性があります。サードパーティのコンポーネントやプラグインが追加されると、問題はさらに悪化します。さらに、名前の衝突の問題は、名前空間の助けを借りて解決できます。 PHP の定数、関数、クラスを名前空間ライブラリにまとめることができます。これらの名前空間は、コンピューター上のファイル システムで使用できるフォルダーと同様に、特定の階層に従うことができます。サブ名前空間という概念は、プロジェクト構造を整理するのに非常に役立ちます。プロジェクトでデータベース アクセスが必要な場合、データベースの例外や接続ハンドラーなど、データベースに関連するすべてのコードを DB というサブ名前空間に保存できます。
柔軟性を維持するには、サブ名前空間をサブディレクトリに保存することをお勧めします。これにより、プロジェクトの構造化が促進されるだけでなく、標準 PSR-0 に準拠した自動ローダーの使用が容易になります。
通常、PHP ではバックスラッシュが名前空間の区切り文字として使用されます。
サンプルサブサンプル
サンプルサブサンプルサンプル
CollegeProjCommonWidget
名前空間の宣言がグローバルに行われる場合、以下のように名前を使用せずに宣言することができます。
コード:
<?php namespace { // Global . . . ! } ?>
場合によっては、以下に示すように、1 つの PHP コード内で複数の名前空間を使用できます。
コード:
<?php namespace sam { } namespace samp { } namespace { } ?>注: 名前空間は PHP プログラムで最初に宣言する必要があることに注意してください。以下にコードが指定されている場合、名前空間が最初に指定されていないため、無効であると検出されます。
コード:
<?php echo "Never Give up ! " ; namespace Html ; . . . ?>
以下は PHP 名前空間の例です:
名前空間を使用し、暗黙的および明示的に関数を呼び出す PHP プログラム。
コード:
<?php namespace sample; function func() { echo 'Never give up! Keep trying. . .'; } // Resolves to the function func(); // Explicitly resolves to the function namespace\func(); ?>
出力:
プログラムでは、最初に名前空間サンプルが作成されます。その後、関数 func が定義され、コードの実行時にテキストが出力されることがわかります。関数が暗黙的および明示的に呼び出されると、テキストが 2 回出力されます。
以下に示すように、関数を定義した後に名前空間が宣言されたとします。さて、どうなるでしょうか?
コード:
<?php function func() { echo 'Never give up! Keep trying. . .'; } // Resolves to the function func(); namespace sample; // Explicitly resolves to the function namespace\func(); ?>
Yes…. An error will be displayed, as shown below. That is, namespace should be defined at the beginning of the program.
Output:
PHP program that uses a namespace and calls a function for printing table details.
Code:
<?php namespace Html; class sampletable { public $heading= ""; public $cntrows= 0; public function fnc() { echo "<p> The Table used is '{$this->heading}' that has {$this->cntrows} different rows. . . .</p>"; } } $tb= new sampletable (); $tb->heading= " Students "; $tb->cntrows= 8 ; ?> <!DOCTYPE html> <html> <body> <?php $tb->fnc(); ?> </body> </html>
Output:
In the program, a namespace Html is created first. After that, a class sampletable is created with variables heading, cnt rows. A function func is also present, which contains a text. Heading students and 8 as count of rows were given after that. On executing the code, the line gets printed with the table name and number of rows.
Namespaces in PHP is similar to namespaces in C++ that encapsulates items by reusing names in order to avoid name conflicts. In this article, different aspects such as syntax, working, and examples of size() functions are explained in detail.
以上がPHP 名前空間の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。