PHP7新特性

2022-10-11 21:55:46 144 0
魁首哥

1. 变量类型声明,可声明函数的参数类型与函数返回值:两种模式: 强制(默认)和严格模式.。可以使用下列类型参数: string,int,float,bool

 declare(strict_types=1);//declare(strict_types=1),必须放在文件的第一行执行代码,当前文件有效!
 function add(int $a, int $b): int {
 return $a+$b;
 }
 echo add(2, 3);
 echo add(1.6, 2.4);
 ##先输出5;而后报错( Argument 1 passed to add() must be of the type integer, float given)
 

2. 新增操作符“<=>”:组合比较两个表达式.当$a小于、等于或大于$b时它分别返回-1、0或1。 比较的原则是沿用PHP的常规比较规则进行的。

PHP7新特性

 //整数
 echo 1 <=> 1; // 0
 echo 1 <=> 2; // -1
 echo 2 <=> 1; // 1
 
 //浮点数
 echo 1.5 <=> 1.5; // 0
 echo 1.5 <=> 2.5; // -1
 echo 2.5 <=> 1.5; // 1

// 字符串 
echo "a" <=> "a"; // 0
echo "a" <=> "b"; // -1
echo "b" <=> "a"; // 1
 

3. define () 可以定义常量数组:

 //php7以前
 define("ABC", "hello world");
 echo ABC;//hello world
 
 //PHP7
 define('ABCS', [
 'dogs',
 'cats',
 'birds'
]);
echo ABCS[2];//cats
 

4. use 语句命名空间引进优化:可以使用单个use语句从相同的命名空间导入类,函数和常量,而不是使用多个use语句。

 //PHP7之前
 use some\namespace\ClassA;
 use some\namespace\ClassB;
 use some\namespace\ClassC as C;
 use const some\namespace\ConstA;
 use const some\namespace\ConstB;
 use const some\namespace\ConstC;
 
 // PHP7之后
use some\namespace\{ClassA, ClassB, ClassC as C};
use const some\namespace\{ConstA, ConstB, ConstC};
 

5. 新增操作符—“??” 。如果变量存在且值不为NULL,它就会返回自身的值,否则返回它的第二个操作数,精简代码量。

 //php7以前 if判断
 if(empty($_GET['param'])) {
 $param = 1;
 }else{
 $param = $_GET['param'];
 }
 
 //php7以前  三元运算符 
 $param = empty($_GET['param']) ? 1 : $_GET['param'];

//PHP7 null合并运算符
$param = $_GET['param'] ?? 1;//1
 

6. 新增加intdiv()函数,接收两个参数,返回值为第一个参数除于第二个参数的值并取整。

 echo intdiv(8,4);//2
 echo intdiv(10,4);//2
 echo intdiv(5,10);//0
 

7. Unicode:格式化字符串,可以接受任何有效的codepoint。

echo "\u{4f60}";

php7之前:\u{4f60}
php7之后:你
 

8. php7不再循环数组内部的指针

 foreach ()循环对数组内部指针不再起作用
 $arr =[0,1,2];
 foreach($arr as &$val){
 var_dump(current($arr));
}
 //php7之前
 int(1)
 int(2)
 bool(false)
//php7之后
int(0)
int(0)
int(0)

按照值进行循环的时候, foreach是对该数组的拷贝操作
$arr = [1,2,3];
foreach ($arr as $val) {
 unset($arr[1]);
}
var_dump($arr);
 //php7之前
[1,3]
 //php7之后,(ps:7.0.0不行) 
[1,2,3]
 

9. 新增的随机函数:random_bytes( ) 和 random_int( )

10. a**b,a的b次方

echo 2 ** 3;//8
 

11. 其他特性:

1  匿名函数 ,匿名类支持;
2 Error变为可捕获的Exception;
3 一个catch语句块现在可以通过管道字符(|)来实现多个异常的捕获;
4 PHP7.1 以后mcrypt_*序列函数都将被移除。推荐使用:openssl 序列函数;
5 list的修改:不再按照相反的顺序赋值,不再支持字符串拆分功能,空的list()赋值不再允许,list()现在也适用于数组对象
6 不能使用同名的构造函数 
7 实例方法不能用静态方法的方式调用
 

收藏
分享
海报
0 条评论
144
上一篇:php利用redis防止商品超发来限制抢购,简单又实用 下一篇:兄弟连PHP培训毕业后,15W年薪入职米购

本站已关闭游客评论,请登录或者注册后再评论吧~

忘记密码?

图形验证码