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: 常量增強,可變函數參數,命名空間增強
1.php5.2以前
1.1 autoload的使用
當在代碼中使用一個未定義的類的時候,該函數就會被調用,現在已經不再使用了,因為一個項目中只能有一個__autoload();現在使用spl_autoload_register();
1.2 PDO和MiSQLi的使用
1.3 類型約束。
通過類型約束可以限制參數的類型,不過這個機制不完善。
2. php5.2
2.1 JSON的支持
增加了json_encode(),json_decode()等函數
3.php5.3
PHP5.3 算是一個非常大的更新,新增了大量新特征,同時也做了一些不向下兼容的修改
3.1 棄用的功能
3.2 匿名函數
$func=function($arg){ echo $arg; } $func('hello');
3.2 新增了魔術方法 __invoke(),__callStatic();
隨著匿名函數的加入,PHP 引入了一個新的魔術方法 __invoke(). 該魔術方法會在將一個對象作為函數調用時被調用: class A { public function __invoke($str) { print "A::__invoke(): {$str}"; } } $a = new A; $a("Hello World");
3.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 }
3.4后期靜態綁定
#self 的語義本來就是“當前類” class A { static public function callFuncXXOO() { print static::funcXXOO(); } // ... }
二、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視頻教程
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com