一、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 XXOOTest; // 該類的完整限定名是 XXOOTestA , 其中第一個反斜槓表示全域性名稱空間。 class A{} // 你還可以在已經檔案中定義第二個名稱空間,接下來的程式碼將都位於 OtherTest2 . namespace OtherTest2; // 範例化來自其他名稱空間的物件: $a = new XXOOTestA; class B{} // 你還可以用花括號定義第三個名稱空間 namespace Other { // 範例化來自子名稱空間的物件: $b = new Test2B; // 匯入來自其他名稱空間的名稱,並重新命名, // 注意只能匯入類,不能用於函數和常數。 use XXOOTestA 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;
推薦教學:PHP7教學
以上就是php版本之間的區別的詳細內容,更多請關注TW511.COM其它相關文章!