PHP7除了在解析方面做了深度优化之外,还在语法用法上有了新功能新特性,参考PHP手册,做了简要笔记;
1.指定标量类型(指定函数参数类型)
<?php
// Coercive mode
function sumOfInts(int ...$ints) //省略号代表传入多个参数并存储在ints容器中
{
return array_sum($ints);
}
var_dump(sumOfInts(2, '3', 4.1));
2.指定返回值类型
function foo(int $int ):int{
return $int;
}
3.严格模式
declare(strict_types=1);
该模式就是当函数输入输出类型被匹配时,需要严格输入输出相应类型的数据,否则报错;
4.NULL合并运算符
<?php
//小于PHP7版本
isset($tmp['key'])?$tmp['key']:'nothing';
//现在版本
$tmp['key]??'nothing';
5.spaceship操作符
用于取得两变量的大小比较结果
echo 1 <=> 1; // 0
echo 1 <=> 2; // -1
echo 2 <=> 1; // 1
6.define常量数组
define('ANIMALS', [
'dog',
'cat',
'bird'
]);
echo ANIMALS[1]; // outputs "cat"
7.定义匿名类
foo($tmp){
echo $tmp->name;
}
foo(new class ABC{public name="ABC";});
8.闭包函数的CALL方法(Javascript的call用法的山寨版)
<?php
class A {private $x = 1;}
// Pre PHP 7 code
$getXCB = function() {return $this->x;};
$getX = $getXCB->bindTo(new A, 'A'); // intermediate closure
echo $getX();
// PHP 7+ code
$getX = function() {return $this->x;};
echo $getX->call(new A);
9.Unicode codepoint 转译语法
echo "\u{9999}"; //输出香
10.USE的批量导入
use some\namespace\{ClassA, ClassB, ClassC as C};
11.生成器用法的拓展(Generator::getReturn())
就是在生成器中使用return,使用时用过Generator::getReturn()来回去返回值,如:
<?php
$gen = (function() {
yield 1;
yield 2;
return 3;
})();
foreach ($gen as $val) {
echo $val, PHP_EOL;
}
echo $gen->getReturn(), PHP_EOL;