PHP7.4新特性和抛弃的功能总结
PHP7.4新特性
PHP7.4上月28号现已发布了。又带来了一些新特性。能够让我们的代码写的更少了。
1.属性添加限制类型
classUser{
publicint$age;
publicstring$name
}
$user=newUser();
$user->age=10;
$user->name=”张三”;
//error
$user->age=”zhang”;//需要传递int
2.箭头函数
这个特性基本上参阅Js的ES6的语法。能够让我们的代码写的更少。假如你的代码有fn这个函数。可能会抵触
$factor=10;
$nums=array_map(fn($n)=>$n*$factor,[1,2,3]);//[10,20,30]
//之前的写法
$nums=array_map(function($num)use($factor){
return$num*$factor;
},[1,2,3])
3.有限回来类型协变与参数类型逆变
仅当运用主动加载时,才供给彻底协变/逆变支撑。在单个文件中,只能运用非循环类型引证,由于所有类在被引证之前都必须可用。
classA{}
classBextendsA{}
classProducer{
publicfunctionmethod():A{}
}
classChildProducerextendsProducer{
publicfunctionmethod():B{}
}
?>
4.数组解包
运用展开运算符…解包数组。这个特性,应该又是从js那吸收过来的。看例子
$parts=[‘apple’,’pear’];
$fruits=[‘banana’,’orange’,…$parts,’watermelon’];//[‘banana’,’orange’,’apple’,’pear’,’watermelon’];
//老的写法
$fruits=array_merge([‘banana’,’orange’],$parts,[‘watermelon’]);
5.空合并运算符赋值
$array[‘key’]??=computeDefault();
//老的写法
if(!isset($array[‘key’])){
$array[‘key’]=computeDefault();
}
?>
6.数值文字分隔符
数字文字能够在数字之间包括下划线。
6.674_083e-11;//float
299_792_458;//decimal
0xCAFE_F00D;//hexadecimal
0b0101_1111;//binary
?>
7.答应从__toString()抛出反常
现在答应从__toString()引发反常,以往这会导致丧命过错,字符串转化中现有的可恢复丧命过错已转化为Error反常。
8.Filter
新增FILTER_VALIDATE_FLOAT
filter_var(1.00,FILTER_VALIDATE_FLOAT);
filter.filters.validate
9.strip_tags支撑数组
strip_tags($str,[‘p’,’a’,’div’]);
//老的写法
strip_tags($str,”
“);
抛弃的特性
1.没有显式括号的嵌套三元运算符
1?2:3?4:5;//deprecated
(1?2:3)?4:5;//ok
1?2:(3?4:5);//ok
?>
面试的时候,终于不必忧虑问你这个结果是啥了。其实生产中,我们也不会这么写。
2.花括号拜访数组索引
$arr=[“a”=>”111″];
$index=”a”;
$arr{$index}//抛弃
$arr[$index];
说实话,仍是第一次见到,抛弃了,阐明我们不会这么用。
3.real和is_real实数
$num=””;
$a=(real)$num;//抛弃
$a=(float)$num;
4.parent关键词在没父类的类中运用
在没有父类的类中运用parent会出现编译过错。
classTest{
publicfunctionindex()
{
returnparent::index();//编译过错
}
}
5.money_format函数
money_format被抛弃,运用numberFormater替换
6.移除的拓展
1.Firebird/Interbase
2.Recode
3.WDDX