PHP 名前空間: 非修飾名、修飾名、および完全修飾名インスタンスの詳細な説明

伊谢尔伦
リリース: 2023-03-07 19:28:02
オリジナル
3631 人が閲覧しました

PHP 名前空間では、空間の 3 つの名前 (非修飾名、修飾名、完全修飾名) の用語と、PHP がそれらを解析する方法を理解しておく必要があります。公式ドキュメントは非常に優れているので、それをそのまま使用して理解することは、以下の内容を学ぶのに非常に役立ちます。前に 名前空間のサブスペースとパブリック スペース で学んだように、名前空間の呼び出し構文はファイル パスのようなものであることは理にかなっています。これにより、サブスペースをカスタマイズして各スペース間の関係を記述することができます。

名前空間内の 3 つの名前の用語は次のとおりです:

1. 非修飾名 、または $comment = new Comment(); などのプレフィックスを含まないクラス名。現在の名前空間が BlogArticle の場合、Comment は BlogArticleComment として解析されます。コメントを使用するコードに(グローバル空間内の)名前空間のコードが含まれていない場合、コメントはコメントとして解析されます。

2. 修飾名 、または $comment = new ArticleComment(); などの接頭辞を含む名前。現在の名前空間が Blog の場合、Comment は BlogArticleComment として解析されます。コメントを使用するコードに(グローバル空間内の)名前空間のコードが含まれていない場合、コメントはコメントとして解析されます。

3. 完全修飾名、または $comment = new ArticleComment(); などのグローバル接頭辞演算子を含む名前。この場合、Comment はコード内で常にリテラル名 ArticleComment に解決されます。

実際、これら 3 つの名前は、ファイル名 (comment.php など)、相対パス名 (./article/comment.php など)、絶対パス名 (/blog/article/comment など) と比較できます。 .php)なので、わかりやすいかもしれません。

現在のブログ スペースを表す非修飾名を使用して、ここでブログ スペースを作成します。この呼び出しはインスタンス化後に解析されます。修飾名を使用して、インスタンス化後、この呼び出しは BlogArticleComment() に解析されます。クラスの前にバックスラッシュがないことに注意してください。完全修飾名を使用して、この呼び出しがインスタンス化後に解析されることを示します。クラスの前にバックスラッシュがある場合とバックスラッシュがない場合の違いに注意してください。

サンプルコードは次のとおりです:

<?php
//创建空间Blog
namespace Blog;
class Comment { }
//非限定名称,表示当前Blog空间
//这个调用将被解析成 Blog\Comment();
$blog_comment = new Comment();
//限定名称,表示相对于Blog空间
//这个调用将被解析成 Blog\Article\Comment();
$article_comment = new Article\Comment(); //类前面没有反斜杆\
//完全限定名称,表示绝对于Blog空间
//这个调用将被解析成 Blog\Comment();
$article_comment = new \Blog\Comment(); //类前面有反斜杆\
//完全限定名称,表示绝对于Blog空间
//这个调用将被解析成 Blog\Article\Comment();
$article_comment = new \Blog\Article\Comment(); //类前面有反斜杆\
//创建Blog的子空间Article
namespace Blog\Article;
class Comment { }
?>
ログイン後にコピー

実際、以前の紹介では非修飾名と完全修飾名を使用していましたが、今回はついにそれらに名前が付けられました。

ここでは、名前空間の 3 つの名前と用語を最初に学習します。次の章では、名前空間のエイリアスとインポートについて説明します。

【おすすめ関連チュートリアル】

1.「

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

2. 名前空間: 同じ名前、同じ性別ですが、私たちは属しています。異なる時間と空間へ


3.

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

以上がPHP 名前空間: 非修飾名、修飾名、および完全修飾名インスタンスの詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!