abstrait:PHP支持兩種抽象的訪問當(dāng)前命名空間內(nèi)部元素的方法, __NAMESPACE__ 魔術(shù)常量和namespace關(guān)鍵字。一、常量 __NAMESPACE__ 的值是包含當(dāng)前命名空間名稱的字符串。在全局的,不包括在任何命名空間中的代碼,它包含一個空的字符串。1. __NAMESPACE__ 示例, 在命名空間中的代碼<?phpnamespace
PHP支持兩種抽象的訪問當(dāng)前命名空間內(nèi)部元素的方法, __NAMESPACE__ 魔術(shù)常量和namespace關(guān)鍵字。
一、常量 __NAMESPACE__ 的值是包含當(dāng)前命名空間名稱的字符串。在全局的,不包括在任何命名空間中的代碼,它包含一個空的字符串。
1. __NAMESPACE__ 示例, 在命名空間中的代碼
<?php
namespace MyProject ;
echo '"' , __NAMESPACE__ , '"' ; // 輸出 "MyProject"
?>
2. __NAMESPACE__ 示例,全局代碼
<?php
echo '"' , __NAMESPACE__ , '"' ; // 輸出 ""
?>
3.使用__NAMESPACE__動態(tài)創(chuàng)建名稱
常量 __NAMESPACE__ 在動態(tài)創(chuàng)建名稱時很有用,例如:
<?php
namespace MyProject ;
function get ( $classname )
{
$a = __NAMESPACE__ . '\\' . $classname ;
return new $a ;
}
?>
二、關(guān)鍵字 namespace 可用來顯式訪問當(dāng)前命名空間或子命名空間中的元素。它等價于類中的 self 操作符。
1.namespace操作符,命名空間中的代碼
<?php
namespace MyProject ;
use blah \ blah as mine ;
blah \ mine (); // 調(diào)用函數(shù)blah\blah\mine()
namespace\ blah \ mine (); // 調(diào)用函數(shù) MyProject\blah\mine()
namespace\ func (); //調(diào)用函數(shù)MyProject\func()
namespace\ sub \ func (); // 調(diào)用函數(shù)MyProject\sub\func()
namespace\ cname :: method (); // 調(diào)用MyProject\cname中的靜態(tài)方法"method"
$a = new namespace\ sub \ cname ();
$b = namespace\ CONSTANT ;
?>
2.namespace操作符, 全局代碼
<?php
namespace\ func (); // 調(diào)用函數(shù)func()
namespace\ sub \ func (); // 調(diào)用函數(shù) sub\func()
namespace\ cname :: method (); // 調(diào)用cname中的靜態(tài)方法 "method"
$a = new namespace\ sub \ cname ();
$b = namespace\ CONSTANT ;
?>
Professeur correcteur:天蓬老師Temps de correction:2019-04-12 09:22:58
Résumé du professeur:所謂導(dǎo)入外部空間, 只是給本類中引用的外部類名起一個別名罷了, 并不代碼加載操作, 所以不能省略掉include , require