PHP53、54、55、56各版本重要更新簡述(上)

WBOY
發布: 2016-07-29 09:06:37
原創
2076 人瀏覽過

今天沒事,偶爾看到phpstorm中的版本選擇處有關於各版本的區別的簡短描述,於是總結一下。

PHP53、54、55、56各版本重要更新簡述(上)
PHP5.3相對於之前版本,最大區別也就是命名空間和匿名函數了,這在平時開發和各大框架中都用的比較多了,就不再詳述了。
PHP5.4的主要更新是陣列簡寫語法格式和traits了。
關於數組簡寫,說起來也挺簡單,只是為數組添加了一個新的聲明方法,如下:

// PHP5.4之前
$array = array(
    "foo" => "bar",
    "bar" => "foo",
);

// 自 PHP 5.4 起
$array = [
    "foo" => "bar",
    "bar" => "foo",
];
登入後複製

而關於PHP5.4的traits就比較少見了,代碼說明:

class Base {
    public function sayHello() {
        echo 'Hello ';
    }
}

trait SayWorld {
    public function sayHello() {
        parent::sayHello();
        echo 'World!';
    }
}

class MyHelloWorld extends Base {
    use SayWorld;
}

$o = new MyHelloWorld();
$o->sayHello();
登入後複製

說明一下:結果是'Hello World!',從基底類別繼承的方法會被trait中的同名方法覆蓋,當前類別中的方法覆蓋trait中的同名成員;如果trait中定義了屬性,則當前類別中不能定義同名屬性;trait中也可以定義抽象方法和靜態成員。可以使用多個trait,它們之間用逗號分隔,如下:

use SayHello1,SayHello2;
登入後複製

如果SayHello1和SayHello2中有同名成員,會產生致命錯誤,解決方法如下:

use SayHello1,SayHello2 {
    SayHello1::sayHello insteadof SayHello2;  // 意思是用SayHello1中的sayHello方法代替SayHello2中的同名方法,注:此处的sayHello不一定是静态方法
    // ...
    // 或
    SayHello1::sayHello as sayHello1;  // 为其另取一个名字,也可解决
}
登入後複製

PHP5.5中的變化主要是異常處理中新增finally關鍵字和生成器generator。
關於finally,代碼說明:

try {
    throw new ErrorException('Some Error Message');
} catch (ErrorException $e) {
    echo $e->getMessage()."111 \n";
} catch(Exception $e) {
    echo $e->getMessage()."222 \n";
} finally {
    echo 'finally';
}
登入後複製

不管產沒產生異常,都會輸出finally。
關於生成器generator,我看了看手冊,不明覺厲。明白了再加上...
今天先到這裡......

以上就介紹了PHP53、54、55、56各版本重要更新簡述(上),包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!