laravel5.8 php版本7.0和7.1

使用laravel关于php版本那些坑。。。。

昨天要代码要上线上测试环境,作为一个苦逼的码农只好加班熬夜赶项目,终于代码敲好之后开始了上线的操作,首先服务器权限的问题搞得开始怀疑人生,在一顿猛如虎的操作后,把上线的流程梳理明白(此刻我只想说,你给我rm -rf /* 的权限,我大晚上的困得要死,跑路那肯定是行不通的)
在这个夜黑风高的夜晚,程序员小X就开始对服务器进行了操作来部署代码,一番操作后代码到了测试服务器上,进入项目里开始执行composer install 安装依赖的时候全部报错,瑟瑟发抖的我开始检查代码,开始以为自己写的项目又问题(最后是发现我们的运维在测试服务器装的php版本是7.0的。。。而laravel5.8支持的php版本是 大于等于7.1的)
第二天程序员小X告诉我们的运维大兄弟php要升级,经过大兄弟的一系列思想斗争他开始了升级PHP版本的道路,几个小时后程序员小X询问我们的运维大兄弟装好没有,这位大兄弟告诉程序员小X报了点小错,出了问题 ,… 终于php版本装好了,程序员小X 执行php-v 看到了PHP版本是7.2.9的,顿时解放了。开始重新部署代码,发现还是和昨天一样的错误,顿时心里很懵逼,再次检查php版本发现就是7.2.9的,最后在程序里输出phpinfo(); 发现版本是7.0的 。。
等等,那位大兄弟是不是忘了重启php-fpm了。。

下面说一下php7.1新增的一些功能

0.list 的方括号([])简写以及增加指定key
可以用list 来快速遍历得到数组里面的值。现在可以用[]简写了。
PHP7.1才支持:[$method, $pathInfo] = [1,2,3]; 这种写法的,
php7.0一下则不支持
支持: list($method, $pathInfo) = [1,2,3];

1.可为空(Nullable)类型

function testReturn(?string $name)
{
    return $name;
}

var_dump(testReturn('yangyi'));
var_dump(testReturn(null));
var_dump(testReturn2());

打印输出


$ php php71.php

string(6) "yangyi"

NULL

PHP Fatal error:  Uncaught ArgumentCountError: Too few arguments to function testReturn(), 0 passed in php71.php on line 22 and exactly 1 expected in php71.php:14
Stack trace:
#0 php71.php(22): testReturn()
#1 {main}
  thrown in php71.php on line 14

如上如:第三个报了一个致命的错误。

再来看下,函数返回值是Nullable的情况:

function testReturn3() : ?string
{
    //return "abc";
    //return null;
}

var_dump(testReturn3());

如果加了? 要么返回 string ,要么返回null。不能啥也不返还。会报错。

2.void返回类型

function testReturn4() : void
{
    //1. 要么啥都不返还 ok

    //2. 要么只return; ok
    //return;

    //3. return null 也会报错
    //return null;

    //4. return 4 会报错
    //return 4;
}

3.多条件 catch
在以往的 try … catch 语句中,每个 catch 只能设定一个条件判断:

try {
    // Some code...
} catch (ExceptionType1 $e) {
    // 处理 ExceptionType1
} catch (ExceptionType2 $e) {
    // 处理 ExceptionType2
} catch (Exception $e) {
    // ...
}

4、类常量可见范围设定
之前类里面额常量用const申明,是没有可见属性的。现在把方法的可见属性移植了过来:

<?php 
class ConstDemo 
{
    // 常量默认为 public
    const PUBLIC_CONST = 0;

    // 可以自定义常量的可见范围
    public const PUBLIC_CONST_B = 2;
    protected const PROTECTED_CONST = 3;
    private const PRIVATE_CONST = 4;

    // 多个常量同时声明只能有一个属性
    private const FOO = 1, BAR = 2;
}

5、支持负的字符串偏移
有2个更新,1是字符串直接取,2是strpos函数第三个参数支持负数。表示从尾部取。
string变量可以直接取值,不用通过变量名,是在php5.5加入的。现在可以从尾部取:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值