首页  »   PHP

PHP7 惯用新特性

网友分享于:2018-05-16  浏览:0次
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,则返回左侧,否则将返回其右侧值。

<?php  

 

// 获取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

};

相关解决方案

最新解决方案