這篇文章主要介紹了php版本之間的區別是什么,具有一定借鑒價值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。
一、PHP 5.2、5.3、5.4、5.5、5.6 版本區別對比以及新功能詳解
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.3
PHP5.3算是一個非常大的更新,新增了大量新特征,同時也做了一些不向下兼容的修改:
1、匿名函數
$func=function($arg){ echo $arg; }$func('hello');
2、新增了魔術方法 __invoke(),__callStatic();
隨著匿名函數的加入,PHP 引入了一個新的魔術方法 __invoke(). 該魔術方法會在將一個對象作為函數調用時被調用: class A { public function __invoke($str) { print "A::__invoke(): {$str}"; } } $a = new A; $a("Hello World"); 輸出毫無疑問是: A::__invoke(): Hello World __callStatic() 則會在調用一個不存在的靜態方法時被調用。
3、命名空間
<?php // 命名空間的分隔符是反斜杠,該聲明語句必須在文件第一行。 // 命名空間中可以包含任意代碼,但只有 **類, 函數, 常量** 受命名空間影響。 namespace XXOO\Test; // 該類的完整限定名是 \XXOO\Test\A , 其中第一個反斜杠表示全局命名空間。 class A{} // 你還可以在已經文件中定義第二個命名空間,接下來的代碼將都位于 \Other\Test2 . namespace Other\Test2; // 實例化來自其他命名空間的對象: $a = new \XXOO\Test\A; class B{} // 你還可以用花括號定義第三個命名空間 namespace Other { // 實例化來自子命名空間的對象: $b = new Test2\B; // 導入來自其他命名空間的名稱,并重命名, // 注意只能導入類,不能用于函數和常量。 use \XXOO\Test\A as ClassA }
二、php7的新特性
./bin/php -v #查看PHP版本 ./bin/php -m #查看安裝的模塊
1、變量類型
function test(int $a,string $b,array $c):int{ }
2、錯誤異常
try/catch
3、zval使用棧內存
節約了內存分配 php5 zval*val;make_std_zval(val); php7 zval val;
感謝你能夠認真閱讀完這篇文章,希望小編分享php版本之間的區別是什么內容對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,遇到問題就找億速云,詳細的解決方法等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。