您现在的位置是:首页 > 文章内容文章内容

PHP7新特性

lipeng2019-08-17 18:20:40PHP1人已围观



PHP7是PHP编程语言全新的一个版本,主要在性能方面获得了极大的提升。官方的文档显示,PHP7可以达到PHP5.x版本两到三倍的性能。同时还对PHP的语法做了梳理,提供了很多其他语言流行的语法格式。  下面是整理出来的PHP7新特性;

1566066566136258.jpeg

一、PHP标量类型与返回值类型声明

默认情况下,所有的PHP文件都处于弱类型校验模式。PHP 7 增加了标量类型声明的特性,标量类型声明有两种模式:强制模式 (默认)、严格模式。标量类型声明语法格式:declare(strict_types=1);通过指定strict_type的值为1或者0,1表示严格类型校验模式,作用于函数调用和返回语句;0表示弱类型校验模式。可以使用的参数类型:int、float、bool、string、interfaces、array、callable

二、新增NULL合并运算符

PHP 7 新增加的 NULL 合并运算符(??)是用于执行isset()检测的三元运算的快捷方式。
NULL 合并运算符会判断变量是否存在且值不为NULL,如果是,它就会返回自身的值,否则返回它的第二个操作数。
以前我们这样写三元运算符:

$title = isset($_GET['title']) ? $_GET['title'] : 'PHP是世界上最好的语言';

现在我们可以直接这样写:

$title = $_GET['title'] ?? ' PHP是世界上最好的语言  ';

三、PHP太空船运算符(组合比较符)

PHP 7 新增加的太空船运算符(组合比较符)用于比较两个表达式 $a 和 $b,如果 $a 小于、等于或大于 $b时,它分别返回-1、0或1。

<?php
// 整型比较
print( 1

四、PHP常量数组

在 PHP 5.6 中仅能通过 const 定义常量数组,PHP 7 可以通过 define() 来定义。

<?php
// 使用 define 函数来定义数组
define('sites', ['Google','Baidu','Taobao']);

print(sites[1]);// 执行输出结果为: Baidu  
?>

五、PHP匿名类

PHP 7 支持通过 new class 来实例化一个匿名类,匿名类可以创建一次性的简单对象

<?php
class Rectangle
{
public $width;
public function __construct($width)
{
$this->width = $width;
}

public function measure($height):int
{
return $this->width*$height;
}
}

$result = (new class(20) extends Rectangle{})->measure(10);
echo $result;//200

?>


六、Closure::call()

PHP 7 的 Closure::call() 有着更好的性能,将一个闭包函数动态绑定到一个新的对象实例并调用执行该函数。

<?php
class Msg{
private $message = 'PHP是世界上最好的语言。';
}

//绑定新的对象并执行该函数
//PHP7之前
//1:定义闭包函数
$msg = function(){
return $this->message;
};
//2:闭包函数绑定到类上
$data = $msg->bindTo(new Msg,'Msg');
echo $data();//PHP是世界上最好的语言。

echo "
";

//PHP7+绑定新的对象并执行该函数
$new_msg = function(){
return $this->message;
};
echo $new_msg->call(new Msg);//PHP是世界上最好的语言。
?>


(未完待续)


用户评论:

我的名片

姓名:李鹏

职业:PHP开发工程师

现居:广东省-深圳市

Email:lipeng4203@163.com