目前来说php7的重大特性基本已经是定型了,PHP7对于上一个系列的PHP5.n,可以说是一个大规模的革新,尤其是在性能方面实现跨越式的大幅提升。
首先看一下php版本速度测试和压力测试图:
上图为:PHP7的性能测试结果,耗时从2.991下降到1.186,大幅度下降60%。
上图为:WordPress的QPS压测,PHP7对比PHP5.6,QPS提升2.77倍。
由此可见,php7是个新的趋势。
下面介绍一下php7的功能
1.标量参数类型声明
现在支持字符串(string)、整型(int)、浮点数(float)、及布尔型(bool)参数声明,以前只支持类名、接口、数组及Callable
两种风格:强制转换模式(默认)与严格模式<?php
function sumOfInts(int ...$ints)
{
return array_sum($ints);
}
var_dump(sumOfInts(2, '3', 4.1));
2.返回类型声明<?php
function arraysmohuli(array ...$arrays): array
{
return array_map(function(array $array): int {
return arraysmohuli($array);
}, $arrays);
}
print_r(arraysSum([1,2,3], [4,5,6], [7,8,9]));
3.??运算符<?php
$username = $_GET['user'] ?? 'mohuli';
等价于
$username = isset($_GET['user']) ?? $_GET['user'] ?? 'mohuli';
4.<=> 比较运算符<?php
// Integers
echo 1 <=> 1; // 0
echo 1 <=> 2; // -1
echo 2 <=> 1; // 1
// Floats
echo 1.5 <=> 1.5; // 0
echo 1.5 <=> 2.5; // -1
echo 2.5 <=> 1.5; // 1
// Strings
echo "a" <=> "a"; // 0
echo "a" <=> "b"; // -1
echo "b" <=> "a"; // 1
5.define支持定义数组类型的值<?php
define('ANIMALS', [
'dog',
'cat',
'bird'
]);
echo ANIMALS[1]; // outputs "cat"
6.匿名类<?php
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());
7.增加了整除函数 intdiv