PHP基礎(chǔ)之命名空間4——命名空間和動(dòng)態(tài)語(yǔ)言特征
PHP 命名空間的實(shí)現(xiàn)受到其語(yǔ)言自身的動(dòng)態(tài)特征的影響。因此,如果要將下面的代碼轉(zhuǎn)換到命名空間中:
Example #1 動(dòng)態(tài)訪問(wèn)元素
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?>
必須使用完全限定名稱(chēng)(包括命名空間前綴的類(lèi)名稱(chēng))。注意因?yàn)樵趧?dòng)態(tài)的類(lèi)名稱(chēng)、函數(shù)名稱(chēng)或常量名稱(chēng)中,限定名稱(chēng)和完全限定名稱(chēng)沒(méi)有區(qū)別,因此其前導(dǎo)的反斜杠是不必要的。
Example #2 動(dòng)態(tài)訪問(wèn)命名空間的元素
<?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 /* 注意如果使用雙引號(hào), 一定要使用'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)文章:
1. IntelliJ IDEA導(dǎo)入jar包的方法2. Python requests庫(kù)參數(shù)提交的注意事項(xiàng)總結(jié)3. ASP基礎(chǔ)知識(shí)VBScript基本元素講解4. SpringBoot參數(shù)校驗(yàn)與國(guó)際化使用教程5. vue-electron中修改表格內(nèi)容并修改樣式6. ajax請(qǐng)求添加自定義header參數(shù)代碼7. python操作mysql、excel、pdf的示例8. 詳談ajax返回?cái)?shù)據(jù)成功 卻進(jìn)入error的方法9. 使用Python和百度語(yǔ)音識(shí)別生成視頻字幕的實(shí)現(xiàn)10. JavaScript中l(wèi)ayim之整合右鍵菜單的示例代碼
