php7新特性 异常,PHP7 惯用新特性

1.标量类型声明

PHP是一种弱类型的编程语言,因此没有提供任何方法来指定输入参数和返回值的类型,PHP7突破了这种现状,增加了对标量类型(int,float,string,bool)的声明支持,增加declare(strict_types=1)指令声明是否严格类型校验,来看一段代码:

declare(strict_types=1)

function add(int $x, int $y) : int

{

return $x+ $y;

}

echo add(1, 2); //int(7)

有效的类型有:class/interfacename, self, array, callable, bool, float, int and string.

2. ?? ——NULL合并运算符

PHP7中添加了NULL合并运算符,不要小看这个“??”,有了它我们就能很方便的获取一个参数,并能在其为空的情况下提供一个默认值。如何??运算符左侧值存在并且不为NULL,则返回左侧,否则将返回其右侧值。

// 获取user参数的值(如果为空,则用'nobody')

// PHP5中我们这样来实现:

$username = isset($_GET['user']) ? $_GET['user'] :'nobody';

// PHP7中,使用??运算符更便捷:

$username = $_GET['user'] ?? 'nobody';

?>

3.匿名类

匿名类顾名思义没有类名称,其声明和实例化是同时的,PHP7 支持通过 new class 来实例化一个匿名类,可以用来替代一些"用后即焚"的完整类定义。

echo (new class() {

publicfunction myMethod() {

return"Hello!";

}

})->myMethod();

//Result: Hello!

4.定义数组常量

define('MYCONSTANT', array('a','b','c'));

5.结合比较运算符(<=>)

用于比较两个表达式。当$a 大于、等于或小于$b 时它分别返回1、0或-1

// PHP 7之前的写法:比较两个数的大小

function func ( $ a , $ b ) {

return ($a < $b) ? -1 : (($a > $b) ? 1 : 0);

}

// PHP新增的操作符 <=>

function func ( $ a , $ b ) {

return $a <=> $b;

}

6.一次捕捉多种类型的异常 / 错误

PHP 7.1 新添加了捕获多种异常/错误类型的语法——通过竖杠“|”来实现。

try {

throw new LengthException("LengthException");

//   throw new DivisionByZeroError("DivisionByZeroError");

//   throw new Exception("Exception");

} catch (\DivisionByZeroError | \LengthException $e) {

echo "出错消息 --- ", $e->getMessage(), PHP_EOL;

} catch (\Exception $e) {

echo "出错消息 --- ", $e->getMessage(), PHP_EOL;

} finally {

// ...

}

7.use 组合声明

use 组合声明可以减少 use 的输入冗余。

use PHPGoodTaste\Utils\{

Util,

Form,

Form\Validation,

Form\Binding

};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值