1.标量类型声明
可以使用字符串(string), 整数 (int), 浮点数 (float), 以及布尔值 (bool),以前只支持类名、接口、数组及Callable.
两种风格:强制转换模式(默认)与严格模式( declare(strict_types=1) );
function xxx(int $a, string $b) :array
{
return array($a, $b);
}
2.返回值类型声明
PHP 7 增加了对返回类型声明的支持。 类似于参数类型声明,返回类型声明指明了函数返回值的类型。可用的类型与参数声明中可用的类型相同。
function arraysSum(array ...$arrays): array
{
return array_map(function(array $array): int {
return array_sum($array);
}, $arrays);
}
print_r(arraysSum([1,2,3], [4,5,6], [7,8,9]));
以上实例会输出:
Array
(
[0] => 6
[1] => 15
[2] => 24
)
3.??运算符NULL 合并运算符
//原写法
$username = isset($_GET['user]) ? $_GET['user] : 'nobody';
//现在
$username = $_GET['user'] ?? 'nobody';
4.<=> 比较运算符也叫太空船操作符(组合比较符)
就是看两个表达式值的大小,三种关系: = 返回0、< 返回-1、 > 返回 1
语法:$c = $a <=> $b
如果$a > $b, $c 的值为1
如果$a == $b, $c 的值为0
如果$a < $b, $c 的值为-1
5.define支持定义数组类型的值
define('ARR',['a','b']);
echo ARR[1];//
6.匿名类
现在支持通过new class 来实例化一个匿名类,实例如下:
interface Logger {
public function log(string $msg);
}
class Application {
private $logger;
public function getLogger(): Logger {
return $this->logger;
}
public function setLogger(Logger $logger) {
$this->logger = $logger;
}
}
$app = new Application;
$app->setLogger(new class implements Logger {
public function log(string $msg) {
echo $msg;
}
});
var_dump($app->getLogger());
?>
以上实例会输出:
object(class@anonymous)#2 (0) {
}
7.匿名函数
$anonymous_func = function(){return 'function';};
echo $anonymous_func(); // 输出function
8.增加了整除函数 intdiv
var_dump(intdiv(10, 3));
?>
以上实例会输出:
int(3)
9.PHP Closure::call()
PHP 7 的 Closure::call() 有着更好的性能,将一个闭包函数动态绑定到一个新的对象实例并调用执行该函数。
实例
实例
class A {
private $x = 1;
}
// PHP 7 之前版本定义闭包函数代码
$getXCB = function() {
return $this->x;
};
// 闭包函数绑定到类 A 上
$getX = $getXCB->bindTo(new A, 'A');
echo $getX();
print(PHP_EOL);
// PHP 7+ 代码
$getX = function() {
return $this->x;
};
echo $getX->call(new A);
?>
以上程序执行输出结果为:
1
1
更多http://www.runoob.com/php/php7-new-features.html