看了@軒脈刃 今天出爐的PHP 5.5 新特性。不過沒有翻譯全,我這裡稍微補充下,整理成完整的一篇:)
原文:http://www.php.net/manual/zh/migration55.new-features.php
php5.5通過引入yield關鍵字來支持generators。Generators提供了一種更加簡潔的生成迭代器的方式,無需通過笨重復雜的Iterator接口。
一個簡單的示例:利用generators實現和range函數一樣的迭代功能
xrange(, , = 1 ( = ; <= ; += 'Single digit odd numbers: ' (xrange(1, 9, 2) " " "\n";
以上例程會輸出:
Single digit odd numbers: 1 3 5 7 9
try-catch語句現在支持後邊添加finally。無論是否會拋出異常,finally中的代碼總是會被執行。
添加了一個新的hash函數API,它可以更簡單的生成安全的散列值,並且能夠像crypt()一樣用於密碼驗證管理。詳細請參閱:password_hash()。
現在,foreach能夠利用list()結構分解被嵌套的數組,並且提取其中的值。舉例來說:
=1, 2],3, 4], ( (, "A: ; B: \n"
以上例程會輸出:
A: 1; B: 2
A: 3; B: 4
更多文檔可以參見foreach手冊。
現在可以將任意的表達式傳入empty()中。例如:
( "This will be printed.\n" (( "This will not be printed.\n"
以上例程會輸出:
This will be printed.
可以利用下標訪問array、string字面中的某個元素或者char。(ps:dereferencing不知道怎麼翻譯才准確...看了軒脈刃的表述:支持用下標獲取,呵呵,其實就是這個意思。)
'Array dereferencing: ' [1, 2, 3][0 "\n" 'String dereferencing: ' 'PHP'[0 "\n";
以上例程會輸出:
Array dereferencing: 1
String dereferencing: P
可以利用ClassName::class 獲取class完整的類名。例如:
ClassName:: "\n";
以上例程會輸出:
Name\Space\ClassName
Zend Optimiser+的opcode cache被加入了php擴展,成為OPcache extension。OPcache可以提高php的執行性能,它能夠在共享內存中存儲編譯好的opcode,以此節約原本為每個請求加載\解析php腳本的時間。具體安裝和使用詳情請參考the installation instructions。
foreach現在支持任何類型的key。原生的php數組僅能夠用標量作為key,而現在可以通過實現Iterator::key()來返回任意類型的數據,並且foreach均能接收。
windows上用於apache2.4的SAPI已被實現支持。
GD擴展做出了很多改進,包括: