PHP Version之PHP5.2.x到5.3.x,php5.2.x5.3.x_PHP教程

來源:互聯網
上載者:User

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,當給函數傳遞不相容的參數...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.