php7新增加的语法特性

1.传参和返回值类型声明

strict_types名词解释:表示开启严格模式检查

declare(strict_types=1);
function test(int $a, int $b):int {
    return $a +$b;
}

2.NULL合并运算符

//php7之前 我用三元运算符取个值是这样的
$name = isset($_GET['name']) ? $_GET['name'] : 'normal';
//php7可以这样
$name = isset($_GET['name']) ?? 'normal';

3.太空船操作符(组合比较符)

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

4.通过define定义常量数组

define('ARR',['dog','banana','apple']);

5.namespace批量导入

use Space\(ClassA, ClassB, ClassC as C);

6.throwable接口

可以通过两种方式来捕捉

//方法1
try {
    undefindfunc();
} catch(Error $e) {
    var_dump($e);
}

//方法2
set_exception_handler(
    function($e) {
        var_dump($e);
});
undefindfunc();

7.closure::call();

class Test {
    private $num = 1;
}

$f = function() {
    return $this->num + 1;
}

echo $f->call(new Test);

8.intdiv函数

//php7之前如果我们想取整
$a = intval(5/2)
//php7
$a = intdiv(5, 2);

9.list的方括号写法

//php7之前
$arr = [1,2,3];
list($a, $b, $c) = $arr;

//php7
$arr = [1,2,3];
[$a, $b, $c] = $arr;

10.抽象语法树(AST)

$a['b'] = 1;
//php7之前这么写 是会报错的
//php7引入抽象语法树的概念后他会被解析成这样一个抽象语法树

在这里插入图片描述
它会被理解成
在这里插入图片描述

11.匿名类

interface Logger {
    public function log(string $msg);
}

class Application {
    private $logger;

    public function getLogger(): Logger {
         return $this->logger;
    }

    public function setLogger(Logger $logger) {
         $this->logger = $logger;
    }
}

$app = new Application;
$app->setLogger(new class implements Logger {
    public function log(string $msg) {
        echo $msg;
    }
});

var_dump($app->getLogger());

会输出

object(class@anonymous)#2 (0) {
}

参考:
https://www.runoob.com/w3cnote/php7-new-features.html
https://www.bilibili.com/video/av82827924?p=5

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值