国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > PHP > 正文

PHP5.3新特性-名稱空間(Namespaces)

2020-03-24 17:13:00
字體:
來源:轉載
供稿:網友
之前陸續介紹了php 5.3的一些新特性,正好上周看到ZendCon關于5.3的ppt,介紹的更為詳細,那么這里做個歸總或者說翻譯:)Namespacesphp 5.3最大的改動,毫無疑問就是Namespaces(此前有一篇相關的PHP Namespaces FAQ)。這給php開發人員帶來的好處不少,廣為人們所詬病的函數命名問題也得到了解決。代碼更清晰5.3之前常見的代碼,需要自定義前綴區分函數和類名CODE: function MY_wrapper() {}
html' target='_blank'>class MY_DB { }
define('MY_CONN_STR', '');
MY_wrapper();
new MY_DB();
MY_CONN_STR; 使用名稱空間之后,代碼看上去更加clean。CODE: namespace MY;
function wrapper() {}
class DB { }
const CONN_STR = '';
use MY AS MY;
wrapper();
new DB();
CONN_STR; 一個文件中定義了多個namespace如果一個文件中定義了多個namespace,應該怎樣處理?CODE: namespace LIB;
class MySQL {}
class SQLite {}
$b = new SQLite();
namespace LIB_EXTRA;
class MScrypt {}
$a = new MScrypt();
var_dump(
get_class($a),
get_class($b)
); 以上代碼輸出為:CODE: string(18) LIB_EXTRA::MScrypt
string(11) LIB::SQLite php是解釋執行的語言,以上結果合情合理。namespace的優先級namespace中定義的函數,類和常量優先,其次才是全局的。CODE: namespace foo;
function strlen($foo) { return htmlentities($foo); }
echo strlen( test // test
echo ::strlen( test // 4
echo namespace::strlen( test // test namespace和autoload的友情autoload會根據namespace名稱以及class名稱來解析類文件位置 僅當namespace和全局范圍都沒找到class定義的情況下,autoload才會被觸發 在namespace中定義的__autoload不會被自動調用 CODE: function __autoload($var) { var_dump($var); } // LIB::foo
require ./ns.php /*
?php
namespace LIB;
new foo();
*/ namespace一些輔料CODE: namespace really::long::pointlessly::verbose::ns;
__NAMESPACE__; // 新增的魔法常量,表示當前namespace名稱
class a{}
get_class(new a()); // really::long::pointlessly::verbose::ns::a
use really::long::pointlessly::verbose::ns::a AS b; // 從名稱空間中引用一個類 注:這里的內容節選自pdf Introduction to PHP 5.3 Slides,后文不再復述。html教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 剑河县| 新干县| 林甸县| 榕江县| 伽师县| 广平县| 琼中| 高青县| 镇江市| 霍山县| 聂荣县| 垣曲县| 万源市| 察隅县| 黔西| 图们市| 个旧市| 白银市| 常州市| 深州市| 库尔勒市| 葵青区| 乐山市| 内乡县| 肇源县| 赤壁市| 大连市| 万州区| 肥城市| 称多县| 花莲县| 诏安县| 浦县| 黔南| 宽甸| 夏邑县| 顺义区| 新津县| 林西县| 和龙市| 南丰县|