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进行升级,实在是非常值得升级的~如果你还有任何问题或建议,欢迎回复提出哦!