PHP5 3新特性之命名空間

2021-04-30 21:58:29 字數 1415 閱讀 5973

命名空間(namespaces)

* php5.3最大的新功能

* 完全支援名字空間特徵

* 大部分的功能的執行在編譯時

* 簡化命名慣例

1) 更清晰的**

不使用 namespaces

2) 使用 namespaces

3) 乙個檔案中多個名字空間

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)

};// result:

// string(18) "lib_extra::mscrypt"

// string(11) "lib::sqlite"

4) 名字空間的層級

namespace foo; 

function strlen($foo)   

echo strlen("test"); // test

echo ::strlen("test") // 4

echo namespace::strlen("test"); // test

* function, class 和 constant 引用在乙個名字空間中首先指向這個名字空間, 其次才是乙個全域性的範圍

5) 名字空間 & 自動引入

function __autoload($var) // lib::foo

require "./ns.php";

/**<?php

namespace lib;

new foo();

?>

*/

* __autoload() 將處理為和名字空間的類名一起。

* autoload 僅在 class 不在名字空間和全域性範圍內存在時觸發。

* __autoload() 宣告在乙個名字空間中將不別呼叫!

6) 其他的名字空間的語法技巧namespace really::long::pointlessly::verbose::ns;

__namespace__; // 當前的名字空間名稱

class a {} 

get_class( new a() ); // really::long::pointlessly::verbose::ns::abs  

use really::long::pointlessly::verbose::ns::a as b; // 從乙個名字空間引用class

php5 3新特性之延遲靜態繫結

基於php版本 5.3.5 php5.3 以後引入了延遲靜態繫結 static 關鍵字 類似於 self 關鍵字 但它指向的是被呼叫的類 document 而不是包含類 domainobject static 和 self 的區別 主要的作用就是,彌補了原先的不足,原先子類可以用parent找到父類...

PHP 核心特性之命名空間

提出 在命名空間提出之前,不同的元件很容易碰到命名的衝突,例如 request response 等常見的命名。php 在 5.3 後提出了命名空間用來解決元件之間的命名衝突問題,主要參考了檔案系統的設計 同乙個目錄下不允許有相同的檔名 同乙個命名空間下不允許有相同的類 不同的目錄可以有同名檔案 不...

利用好PHP5 3的新特性,實現單例模式

5.3以前也可實現,但 較繁瑣,如下 class morder extends smodel 獲取本類單例的方法,公開 return morder public static function instance class class self handle new class return sel...