日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

PHP5各个版本的新功能和新特性总结

發布時間:2025/3/14 php 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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() 函數,如果定義了該函數,那么當在代碼中使用一個未定義的類的時候,該函數就會被調用,你可以在該函數中加載相應的類實現文件,如:

function __autoload($classname) {require_once("{$classname}.php") }

但該函數已經不被建議使用,原因是一個項目中僅能有一個這樣的 __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 數據庫應該是這樣子:

// 連接到服務器,選擇數據庫 $conn = mysql_connect("localhost", "user", "password"); mysql_select_db("database");// 執行 SQL 查詢 $type = $_POST['type']; $sql = "SELECT * FROM `table` WHERE `type` = {$type}"; $result = mysql_query($sql);// 打印結果 while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {foreach($row as $k => $v)print "{$k}: {$v}\n"; }// 釋放結果集,關閉連接 mysql_free_result($result); mysql_close($conn);

為了能夠讓代碼實現數據庫無關,即一段代碼同時適用于多種數據庫(例如以上代碼僅僅適用于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各个版本的新功能和新特性总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。