PHP 5.4.0 released!! 新功能

php-logo
PHP 官方在台灣時間3月2號終於釋出 5.4 版本,我們可以參考官網的 release announcement,想要抓原始碼下來編譯可以參考此下載連結,這次 5.4 改版,有幾個最主要的新功能可以介紹給大家知道: traitsa shortened array syntaxa built-in webserver for testing purposes,底下來一一介紹。

Array 新寫法

大家一般宣告 PHP Array 都是用 array() 來宣告,在5.4之後開始支援 [] 的寫法,有沒有注意到,這跟 Javascript 寫法一樣了,底下看個例子 5.3 以前的寫法
 "bar",
    "bar" => "foo"
);
?>
5.4 之後的寫法
 "bar",
    "bar" => "foo"
];
?>
簡化來說可以把 array() 取代成 [],另外講 Array dereferencing 在 5.4 的新用法,底下先看個例子
一般在5.4以前只要在 function 回傳 array(),都需要在宣告變數去 assign,但是在 5.4 可以直接拿 function 來用
綜合上面的介紹,我們以後可以把 Array function 改寫成底下方式
 111, 2 => 222, 3 => 333); // or
   return [1 => 111, 2 => 222, 3 => 333];
}

$one = foo()[0];
echo $one; // 1

$two = bar()[2];
echo $two; // 222
?>

用 PHP 快速建置 Web Server

大家在寫 PHP 該如何看執行結果呢?除了執行 command line 看到結果之外,一定要有 Web Server 才可以透過瀏覽器瀏覽,從 5.4 之後,PHP 提供了 command line 讓開發者可以快速建置 Web Server。 簡單針對目前目錄
$ cd ~/public_html
$ php -S localhost:8000
可以定義目錄
$ cd ~/public_html
$ php -S localhost:8000 -t foo/
或者是可以寫 router script
Welcome to PHP

"; } ?>
執行
$ php -S localhost:8000 router.php
更多用法可以參考: Built-in web server

Traits 新功能

Traits 讓你在開發物件 method 可以重複利用,對於 Code reuse 真是一大幅音,底下我們看看幾個官網範例
sayHello();
?>
自己宣告 trait SayWorld,在 MyHelloWorld class 裡直接用 use 引入,最後輸出結果是 Hello World!。接著我們看看優先權順序問題
sayHello();
?>
我們可以發現同時兩個 sayHello() method,但是因為讀取優先權的問題,後載入才是真正輸出結果的 method。接著我們看 Multiple Traits Usage 多重使用
sayHello();
$o->sayWorld();
$o->sayExclamationMark();>
?>
大家可以同時載入多個 trait,上面例子也蠻清楚的,其實官網也還有很多範例,如何解決 trait method 衝突問題,這些在 Traits 官網上面都有解說,這次就介紹到這裡,更多 PHP 5.4 消息可以參考 migration guide