PHP5各个版本的新功能和新特性总结
本文目錄:
PHP5.2 以前:autoload, PDO 和 MySQLi, 類型約束
PHP5.2:JSON 支持
PHP5.3:棄用的功能,匿名函數,新增魔術方法,命名空間,后期靜態綁定,Heredoc 和 Nowdoc, const, 三元運算符,Phar
PHP5.4:Short Open Tag, 數組簡寫形式,Traits, 內置 Web 服務器,細節修改
PHP5.5:yield, list() 用于 foreach, 細節修改
PHP5.6: 常量增強,可變函數參數,命名空間增強
一、PHP5.2以前(2006前)
順便介紹一下 PHP5.2 已經出現但值得介紹的特征。
autoload
大家可能都知道 __autoload() 函數,如果定義了該函數,那么當在代碼中使用一個未定義的類的時候,該函數就會被調用,你可以在該函數中加載相應的類實現文件,如:
但該函數已經不被建議使用,原因是一個項目中僅能有一個這樣的 __autoload() 函數,因為 PHP 不允許函數重名。但當你使用一些類庫的時候,難免會出現多個 autoload 函數的需要,于是 spl_autoload_register() 取而代之:
spl_autoload_register(function($classname) {require_once("{$classname}.php") });spl_autoload_register() 會將一個函數注冊到 autoload 函數列表中,當出現未定義的類的時候,SPL [注] 會按照注冊的倒序逐個調用被注冊的 autoload 函數,這意味著你可以使用 spl_autoload_register() 注冊多個 autoload 函數.
注:SPL: Standard PHP Library, 標準 PHP 庫, 被設計用來解決一些經典問題(如數據結構).
PDO 和 MySQLi
即 PHP Data Object, PHP 數據對象,這是 PHP 的新式數據庫訪問接口。
按照傳統的風格,訪問 MySQL 數據庫應該是這樣子:
為了能夠讓代碼實現數據庫無關,即一段代碼同時適用于多種數據庫(例如以上代碼僅僅適用于MySQL),PHP 官方設計了 PDO.
除此之外,PDO 還提供了更多功能,比如:
1.面向對象風格的接口
2.SQL預編譯(prepare), 占位符語法
3.更高的執行效率,作為官方推薦,有特別的性能優化
4.支持大部分SQL數據庫,更換數據庫無需改動代碼
上面的代碼用 PDO 實現將會是這樣:
// 連接到數據庫 $conn = new PDO("mysql:host=localhost;dbname=database", "user", "password");// 預編譯SQL, 綁定參數 $query = $conn->prepare("SELECT * FROM `table` WHERE `type` = :type"); $query->bindParam("type", $_POST['type']);// 執行查詢并打印結果 foreach($query->execute() as $row) {foreach($row as $k => $v)print "{$k}: {$v}\n"; }PDO 是官方推薦的,更為通用的數據庫訪問方式,如果你沒有特殊需求,那么你最好學習和使用 PDO.
但如果你需要使用 MySQL 所特有的高級功能,那么你可能需要嘗試一下 MySQLi, 因為 PDO 為了能夠同時在多種數據庫上使用,不會包含那些 MySQL 獨有的功能。
MySQLi 是 MySQL 的增強接口,同時提供面向過程和面向對象接口,也是目前推薦的 MySQL 驅動,舊的C風格 MySQL 接口將會在今后被默認關閉。
MySQLi 的用法和以上兩段代碼相比,沒有太多新概念,在此不再給出示例,可以參見 PHP 官網文檔 [注]。
注:http://www.php.net/manual/en/mysqli.quickstart.php
類型約束
通過類型約束可以限制參數的類型,不過這一機制并不完善,目前僅適用于類和 callable(可執行類型) 以及 array(數組), 不適用于 string 和 int.
// 限制第一個參數為 MyClass, 第二個參數為可執行類型,第三個參數為數組 function MyFunction(MyClass $a, callable $b, array $c) {// ... }原文地址:http://www.jb51.net/article/48150.htm
轉載于:https://www.cnblogs.com/phpfans/p/4306322.html
總結
以上是生活随笔為你收集整理的PHP5各个版本的新功能和新特性总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何提升自我价值
- 下一篇: 动态规划算法php,php算法学习之动态