php版本之間的區別

2020-07-16 10:06:13

一、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其它相關文章!