记录php从7.0 开始到7.4的变化系列(7.0.x的改动 ,只列出了常用的修改的地方)

 

                                                 前言

全网无前任,有也不承认(有错误欢迎评论,交流)

 

一、7.0.x 改动

1、对于错误的处理
大家都知道 php对于错误的处理 没有java那么优秀,so从7.0开始,php增加了可以捕获Error类型了(仍然有限制,但是最起码在进步了)
;你能够捕获所有的Exception和Error,通过
try{
    //出问题的代码
}catch(Throwable $e){ //只能在php7上使用
    //出问题的解决办法代码
}
*Throwable  相当于捕获Exception和Error的集合(因为这两个都是实现Throwable接口的),如果你确定你要用的是php7,那么就catch  Throwable就对了


2、全局异常注册函数 set_exception_handler() 不再保证收到的一定是 Exception 对象(说明在下面)
*假设你现在用的是php7,那么会有以下结论
// PHP 5 时代的代码将会出现问题(因为php7中也会抛出Error类型,但是你只捕获了Exception的类型,没有捕获Error的)
function handler(Exception $e) { ... }
set_exception_handler('handler');

// 兼容 PHP 5 和 7
function handler($e) { ... }

// 仅支持 PHP 7(推荐)
function handler(Throwable $e) { ... }


3、变量处理的变化(几个例子就懂啦)

※总结写在前面:php7开始,解析顺序变更为从左向右解析,不像php5那么乱了
(截图自官网)

4、 list() 不再以反向的顺序来进行赋值 (只会影响数组格式)

例子:::::::::::
list($a[], $a[], $a[]) = [1, 2, 3];
var_dump($a);
//in  php5
array(3) {
  [0]=>
  int(3)
  [1]=>
  int(2)
  [2]=>
  int(1)
}

//in  php7
array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}

※ list($a, $b, $c) = [1, 2, 3];  这种格式的没有影响。 注意! 不要依赖list赋值顺序 未来可能也会变 !list()  还有一些其他修改,都是一些骚操作的封堵 ! 少写点骚写法,比什么都强   

 

5、 foreach的变化 (只说可能有影响的部分)

当使用引用遍历数组时,现在 foreach 在迭代中能更好的跟踪变化.
例子:
$array = [0];
foreach ($array as &$val) {
    var_dump($val);
    $array[1] = 1;
}

//in php5
int(0)
//in php7 (发现了吧,循环需要注意,否则可能多循环几次,影响性能)
int(0)
int(1)

6、null合并运算符

$username = $_GET['user'] ?? 'nobody';
// 和下面的相等
$username = isset($_GET['user']) ? $_GET['user'] : 'nobody';


7、太空船操作符(组合比较符)

echo 1 <=> 1; // 0
echo 1 <=> 2; // -1
echo 2 <=> 1; // 1


8、通过 define() 定义常量数组(PHP5.6 中仅能通过 const 定义。 )


define('ANIMALS', [
    'dog',
    'cat',
    'bird'
]);

echo ANIMALS[1]; // 输出 "cat"

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值