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 { } ?>
php.cn Dugu Jiijian (4) - PHP ビデオチュートリアル」
2. 名前空間: 同じ名前、同じ性別ですが、私たちは属しています。異なる時間と空間へPHP プログラミングの入門からマスターまでの完全なチュートリアル セット以上がPHP 名前空間: 非修飾名、修飾名、および完全修飾名インスタンスの詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。