5.6
1. 更好的常量
定义常量时允许使用之前定义的常量进行计算:允许常量作为函数参数默认值:
const A = 2;
const B = A + 1;
class C
{
const STR = 'hello';
const STR2 = self::STR . ' world';
}
// 允许常量作为函数参数默认值
function func($arg = C::STR2)
{
echo $arg, PHP_EOL;
echo A, PHP_EOL;
echo B;
}
func();
/*
hello world
2
3
*/
2. ...更好的可变函数参数
...用于代替 func_get_args()
function add(...$args)
{
$result = 0;
foreach ($args as $arg) {
$result += $arg;
}
return $result;
}
$arr = [2, 3]; // 同时可以在调用函数时,把数组展开为函数参数
echo add(1, ...$arr);// 结果为 6
3. 命名空间支持常量和函数
namespace Name\Space {
const FOO = 42;
function f()
{
echo __FUNCTION__ . "\n";
}
}
namespace {
use function Name\Space\f;
use const Name\Space\FOO;
echo FOO , PHP_EOL; // 42
f(); // Name\Space\f
}