PHP5.5.13介紹
PHP是一種具有廣泛應用的腳本語言,可以在Web服務器中使用。PHP 5.5.13是PHP編程語言的一個版本。它有許多新特性和修復了一些嚴重的Bug。下面我們來看看它的新特性和優化:
新特性
PHP5.5.13加入了許多新特性,下面我們一一介紹:
1.生成器
function gen_one_to_three() { for ($i = 1; $i<= 3; $i++) { // 注意變量 $i 的值在不同的 yield 之間是保持傳遞的。 yield $i; } } $generator = gen_one_to_three(); foreach ($generator as $value) { echo "$value\n"; }
上面的代碼示例中,我們使用yield關鍵字創建了一個生成器,生成1-3這三個數字,使用foreach循環輸出這三個數字,在輸出每個數字之前使用了yield關鍵字讓程序等待,這樣就可以在輸出數字之前添加其他代碼。
2.空值合并運算符
$a = null; $b = $a ?? 'default'; echo $b;
上面的代碼示例中,我們使用了空值合并運算符'??',這個運算符在變量為null或不存在時,將會返回默認值。
3.常量數組
define('ANIMALS', [ 'dog', 'cat', 'bird' ]); echo ANIMALS[1];
上面的代碼示例中,我們使用了常量數組,這樣可以存儲一組常量,可以通過下標訪問。
Bug修復
PHP5.5.13修復了許多嚴重的Bug,下面我們來看看:
1.多個header()函數調用導致500錯誤
// 錯誤的代碼示例: header('Location: http://www.example.com/'); header('HTTP/1.1 404 Not Found'); // 正確的代碼示例: header('HTTP/1.1 404 Not Found'); header('Location: http://www.example.com/');
如果在調用多個header()函數時,沒有正確地按照標準的HTTP響應順序來調用這些函數,將會導致500錯誤。
2.隨機數函數的線程問題
// 錯誤的代碼示例: mt_srand(); echo mt_rand(); // 正確的代碼示例: mt_srand(crc32(serialize($_SERVER)) + getmypid()); echo mt_rand();
在多線程環境中使用mt_srand()和mt_rand()函數將可能導致無法生成真正的隨機數,產生不安全的加密等問題。
總結
PHP5.5.13是一個功能強大的PHP版本,有許多新特性和Bug修復,值得開發人員嘗試使用。在使用PHP時,一定要按照標準的方式來使用函數,避免出現一些奇怪的問題。
上一篇php 5.5.20
下一篇java常量和常量表達式