从PHP5到PHP7的注意事项(2) PHP7的一些新特性
1. define定义常量不仅仅只支持标量,还支持了数组
<?php
define('PHPXY', array(
'凤姐',
'芙蓉姐姐',
'杨幂是臭脚'
));
echo PHPXY[1]; // 输出的结果是“芙蓉姐姐”
?>
2.比较的时候支持<=> 可以比较字符串,数组,整型。
<?php
// Integers
echo 1 <=> 1; // 0
echo 1 <=> 2; // -1
echo 2 <=> 1; // 1
PHP学院评:我们认为实际用户不大,在实际工作中使用量不会很高
3.在PHP7 中支持了 函数的强制参数类型指定
<?php
// Coercive mode
function sumOfInts(int …$ints)
{
return array_sum($ints);
}
var_dump(sumOfInts(2, '3', 4.1));
//本例中会输出9,你想想为什么哟?——因为强制规定为了整型
PHP学院评:function funcName(… 参数) 是PHP5.6开始支持的。不要认为是PHP7里的知识点
4. 返回类型也在强制进行规定
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]));
5. 新建了call方法在外部来调用,更短的方式将匿名函数,追加进对向中且完成调用
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);
6. 成员方法中也可以规定必须要返回某个类类型
class A {}
class B extends A {}
class C
{
public function test() : A
{
return new A;
}
}