PHP 5.6正式版終於發佈啦!這次PHP 5.6加入了許多有用的新特性,今天「暢想資源」就來向大家介紹在PHP 5.6新的正式版中有什麼新特性、新功能吧!
提示:本文翻譯至「PHP 5.6: What's New」,由於本人英文水平有限,歡迎指正翻譯錯誤!
PHP 5.6中不向下兼容的修改
在本段中我們將列出一些並不向下兼容的修改,不過大部分PHP 5代碼在PHP 5.6中理論上來說還是可以正常運作的
json_decode
按照JSON的規範, json_decode()
將移除JSON文本中所有非小寫的變量(例如 true
、 false
和 null
)並設定 json_last_error()
GMP資源
如果你還不知道PHP中的GNU多重精度(GMP)是什麼,可以先看看這篇「在PHP.NET上的文章(中文版本)」。在PHP 5.6中,GMP資源是物件(Object),你無需對現有的代碼進行任何修改除非你使用了 is_resource()
這一函數來對資源進行處理
Mcrypt
所有除了鍵(Key)和IV以外的所有Mcrypt函數將不接受錯誤大小的鍵或IV(這些函數包括 mcrypt_encrypt()
、 mcrypt_decrypt()
、 mcrypt_cbc()
、 mcrypt_cfb()
、 mcrypt_ecb()
、 mcrypt_generic()
及 mcrypt_ofb()
)
數組值&覆蓋
在PHP 5.6以前,當你想要在類(Class)中創造數組時,數組很有可能被自動替換:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
class helloWorld { const ONE = 1; public $array = [ self::ONE => 'Eclipse', 'Sublime', 'PHPStorm', ]; } $hello = new helloWorld(); print_r($hello); // PHP 5.6 以前 array('Sublime', 'PHPStorm') // PHP 5.6 array('Eclipse', 'Sublime', 'PHPStorm') |
PHP 5.6中的新功能
常項純量運算
在PHP 5.6中,你可以對包括數字及字母的常量(Constant)進行純量運算(Scalar Expression),在之前的PHP版本中,它應該會被解釋爲一個常數函數靜態值(翻譯的不好...看看例子吧... )
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
const ONE = 1; // Scalar Expression in constant const TWO = ONE * 2; class helloWorld { // Scalar Expression in Property const THREE = TWO + 1; // Scalar Expression in Methods public hello f($a = ONE + self::THREE) { return $a; } } echo (new helloWorld)->hello()."\n"; |
額外的函數參數支援
以前我們可以使用 func_get_args()
函數來取得所有函數中的參數,不過在PHP 5.6中,我們可以直接使用 ...
字串來開啓對額外的函數參數支援!(具體效果可參考PHP自帶函數 scanf()
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
function myTools($name, ...$tools) { echo "Name:". $name.'<br />'; echo "My Tool Count:". count(tools); } myTools('Avinash', 'Eclipse'); // Output: // Name: Avinash // My Tool Count: 1 myTools('Avinash', 'Eclipse', 'Sublime'); // Output: // Name: Avinash // My Tool Count: 2 myTools('Avinash', 'Eclipse', 'Sublime', 'PHPStorm'); // Output: // Name: Avinash // My Tool Count: 3 |
打包參數
我們同樣也可以使用相同的 ...
字串來對任何數組進行打包:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
function myTools($name, $tool1, $tool2, $tool3) { echo "Name:". $name.'<br />'; echo "Tool1:", $tool1.'<br />'; echo "Tool2:", $tool2.'<br />'; echo "Tool3:", $tool3; } $myTools = ['Eclipse', 'Sublime', 'PHPStorm']; myTools('Avinash', ...$myTools); // Output: // Name: Avinash // Tool1: Eclipse // Tool1: Sublime // Tool1: PHPStorm |
** - 平方運算符號
**
運算符號將會被用於平方效果(相等於 ^
),同時該符號也已加入變量快速運算中:
1 2 3 4 5 6 7 8 9 |
echo 2 ** 3; echo "<br/>"; $a=2; $a **= 3; echo $a; // Output // 8 // 8 |
預設字串編碼
現在你可以通過 default_charset()
函數來對 htmlentities()
、 html_entity_decode()
及 htmlspecialchars()
設定預設編碼
最大上傳文件大小
現在你可以設定上傳文件的最大大小爲2GB!
所有已修改之函數列表
所有PHP 5.6中修改的函數可以參考最新的「PHP手冊」
所有新函數列表
所有PHP 5.6中新增的函數可以參考「該部分PHP手冊」
總結
這次的PHP 5.6更新包含了很多的提升及新增功能,並同時可以無縫從老版本PHP進行升級,實在是非常值得升級的~如果你還有任何問題或建議,歡迎回覆提出哦!