PHP Version之PHP5.2.x到5.3.x,php5.2.x5.3.x
不向下相容的變化
1、 在5.3的所有綁定擴充中應用了新的內部參數解析API,當給函數傳遞不相容的參數時將返回NULL,但有些例外,比如函數get_class()在出現錯誤時返回FALSE
2、 Clearstatcache() 預設不再清楚緩衝的realpath。
3、 數組函數natsort(),natcasesort(),usort(),uksort(),array_flip(),和array_unique()將不再接受對象作為參數。
4、 按引用傳遞參數的函數在被按值傳遞調用時,行為發生變化。此前函數將接受按值傳遞的參數,現在將拋出致命錯誤;之前任何期待傳遞應用但是在調用時傳遞了常亮或者字面值得函數,需要在調用前將該值賦值給一個變數。
5、 新的 mysqlnd 庫需要使用 MySQL 4.1 新的 41 位元組密碼格式。繼續使用舊的 16 位元組密碼將導致 mysql_connect() 和其它類似函數 拋出 "mysqlnd cannot connect to MySQL 4.1+ using old authentication." 錯誤。
6、 新的 mysqlnd 庫將不再讀取 MySQL 設定檔(my.cnf/my.ini), 這與舊版本的 libmysql 庫不同. 如果你的代碼依賴於這些配置 檔案, 你可以使用 mysqli_options() 顯式地載入它. 注意, 這意味著如果 PDO 中的 MySQL 支援使用了 mysqlnd 進行編譯,PDO 特有常量 PDO::MYSQL_ATTR_READ_DEFAULT_FILE 和 PDO::MYSQL_ATTR_READ_DEFAULT_GROUP 將是未定義的。
7、 __toString()魔術方法不再接受參數。
8、 魔術方法__get,__set,__isset,__unset,__call應該總是public 並且不能是static,方法簽名是必須的。
9、 現在__call魔術方法在訪問private和protected方法時被調用,static方法用__callStatic。
10、 函數內include或者require一個檔案時,檔案內將不能使用func_get_arg()、func_get_args()和func_num_args()函數。
11、 保留關鍵字:goto 、 namespace
新特性
1、 添加命名空間的支援
2、 添加靜態晚綁定(後期靜態繫結)支援
後期靜態繫結:
原理:儲存了在上一個“非轉寄調用”的類名。當進行靜態方法調用時,該類名即為明確指定的那個(::運算子左側的類);當進行非靜態方法調用時,即為該對象所屬的類。
“後期綁定”的意思是說,static:: 不再被解析為定義當前方法所在的類,而是在實際運行時計算的。
所謂的“轉寄調用“指的是通過以下幾種方式進行的靜態調用,self:: , parent:: , static:: , 以及forward_static_call()。
可用get_called_class()函數來得到被調用的方法所在的類名。
http://php.net/manual/zh/language.oop5.late-static-bindings.php
3、 添加帶有限制的goto跳標籤支援
4、 添加了原生的閉包支援,匿名函數,通常用作回呼函數。
5、 新增兩個魔術方法,__callStatic 和 __invoke
__callStatic:用靜態方式調用一個不可訪問的方法時使用。
__invoke 當嘗試以調用函數的方式調用一個對象時,該方法被自動調用。
6、 添加了Nowdoc文法支援,類似於Heredoc文法,但是包含單引號。
7、 使用Heredoc來初始化靜態變數和類屬性、常量。
8、 可在類外部使用const關鍵詞聲明常量。
9、 三元運算子有了簡寫形式 $b = $a==1 ? : 0;
10、 HTTP 流包裹器將從 200 到 399 全部的狀態代碼都視為成功。
11、 動態訪問靜態方法
12、 異常可以被內嵌
13、 新增了循環參考的記憶體回收行程並且預設是開啟的
14、 Mail()支援郵件發送日誌。
SAPI模組的改變
@TODO
PHP 5.3棄用的功能
1、 PHP5.3新增了兩個錯誤等級:
E_DEPRECATED 說明一個函數或者功能已經被棄用
E_USER_DEPRECATED 表明使用者代碼中的棄用功能
2、 棄用的函數
3、 棄用的功能
棄用通過引用分配new的傳回值(帶有歧義的翻譯 呵呵噠!!)
真相:不能直接引用new的傳回值 $a = &new Redis();
調用時傳遞引用被棄用
PHP 5.3保留的功能
1、 is_a()函數被保留。
新參數
1、 PHP核心
round() 新增mode參數
strstr() 和 stristr()新增 before_needle 參數,若為 TRUE,strstr() 將返回 needle 在 haystack 中的位置之前的部分
Exception::__construct() - 新增 previous 參數,表明異常鏈中的前一個異常。
……………………………..
@TODO
2、 json
json_encode() 新增options參數 編碼格式
json_decode() 新增depth參數 User specified recursion depth.
3、 流(Streams)
@TODO
新函數
1、 PHP核心
2、 Date/Time
date_add() 向DateTime對象增加一定的數量的天、月、年、小時、分鐘、秒
date_create_from_format() 根據給定的格式返回DateTime對象。
date_diff()返回兩個DateTime對象的不同之處
date_get_last_errors() 返回最後日期/時間造作產生的警告或錯誤
date_parse_from_format() 擷取一個日期的資訊
date_sub() 從DateTime對象中減去一定的時間
timezone_version_get() 返回當前時區的資料庫資訊
3、 Hash
hash_copy() 複製雜湊環境 拷貝上下文資源
4、 IMAP
@TODO
5、 JSON
json_last_error() 返回最後發生json的錯誤
6、 MySQL 改進
…………………………..
@TODO
新的類常量
1、 PDO:: FB_ATTR_DATE_FORMAT 為日期設定格式
PDO::FB_ATTR_TIME_FORMAT - 為時間設定格式.
PDO::FB_ATTR_TIMESTAMP_FORMAT - 為時間戳記設定格式.
http://www.bkjia.com/PHPjc/1065785.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/1065785.htmlTechArticlePHP Version之PHP5.2.x到5.3.x,php5.2.x5.3.x 不向下相容的變化 1、 在5.3的所有綁定擴充中應用了新的內部參數解析API,當給函數傳遞不相容的參數...