PHP基礎(chǔ)之命名空間4——命名空間和動態(tài)語言特征
PHP 命名空間的實現(xiàn)受到其語言自身的動態(tài)特征的影響。因此,如果要將下面的代碼轉(zhuǎn)換到命名空間中:
Example #1 動態(tài)訪問元素
example1.php:<?php class classname {function __construct(){ echo __METHOD__,'n';} } function funcname() {echo __FUNCTION__,'n'; } const constname = 'global'; $a = ’classname’; $obj = new $a; // prints classname::__construct $b = ’funcname’; $b(); // prints funcname echo constant(’constname’), 'n'; // prints global?>
必須使用完全限定名稱(包括命名空間前綴的類名稱)。注意因為在動態(tài)的類名稱、函數(shù)名稱或常量名稱中,限定名稱和完全限定名稱沒有區(qū)別,因此其前導(dǎo)的反斜杠是不必要的。
Example #2 動態(tài)訪問命名空間的元素
<?php namespace namespacename; class classname {function __construct(){ echo __METHOD__,'n';} } function funcname() {echo __FUNCTION__,'n'; } const constname = 'namespaced'; include ’example1.php’; $a = ’classname’; $obj = new $a; // prints classname::__construct $b = ’funcname’; $b(); // prints funcname echo constant(’constname’), 'n'; // prints global /* 注意如果使用雙引號, 一定要使用'namespacenameclassname'進(jìn)行轉(zhuǎn)義 */ $a = ’namespacenameclassname’; $obj = new $a; // prints namespacenameclassname::__construct $a = ’namespacenameclassname’; $obj = new $a; // also prints namespacenameclassname::__construct $b = ’namespacenamefuncname’; $b(); // prints namespacenamefuncname $b = ’namespacenamefuncname’; $b(); // also prints namespacenamefuncname echo constant(’namespacenameconstname’), 'n'; // prints namespaced echo constant(’namespacenameconstname’), 'n'; // also prints namespaced?>
相關(guān)文章:
