PHP7.0 的新特性经常会被面试官问到,在平时的项目开发中运用它们也会提升一定的代码质量和代码运行性能,可见这个知识点的重要性。不过有很多人都没有去系统的了解掌握,今天我刚好系统整理了一番分享出来。

图片版

文字版

1. 新增了标量类型声明和函数的返回值类型声明
例如:
<?php declare(strict_types=1)//1:严格模式 0:强制模式(默认)
class OrderService extends BaseService
{.../*** 所有订单详情都是通过这个入口* @param $orderNo* @return array|mixed* @throws Exception*/public function getOrderDetailByOrderNo(string $orderNo) : array{$order = $this->model->getByFields(['order_no' => $orderNo]);if (empty($order)) {return [];}return (new OrderFactory)->getOrder($order['order_type'])->getOrderDetailByOrderNo($orderNo);}
}2. 太空船运算符(组合比较符):<=>
例如:
$c = $a <=> $b
若 $a>$b,则 $c=1
若 $a=$b,则 $c=0
若 $a<$b,则 $c=-13. NULL合并运算:??
PHP7 之前:$c = isset($b)?$b:0;
PHP7+ :$c = $b??0;4. 定义常量数组:define("ARR",[1,2,3])5. 新增抽象语法树AST(高度解耦)
PHP7 之前:PHP 代码 -> Parser 语法解析 -> OPCODE -> 执行
PHP7+ :PHP 代码 -> Parser 语法解析 -> AST -> OPCODE -> 执行6. 命名空间引用优化
PHP7 之前:
use FooLibrary\Bar\Baz\ClassA;
use FooLibrary\Bar\Baz\ClassB;
PHP7+:
use FooLibrary\Bar\Baz\{ ClassA, ClassB};7. 反序列化函数Unserialize()提供更安全的过滤特性8. 新增整除函数intdiv()
例如:intdiv(10,3)
结果:39. 错误处理更友好
* 在PHP7+ 中,很多致命错误以及可恢复的致命错误,都被转换为异常来处理了。 这些异常继承自 Error 类,此类实现了 Throwable 接口 (所有异常都实现了这个基础接口)
* PHP7+ 进一步方便开发者处理, 让开发者对程序的掌控能力更强. 因为在默认情况下, Error会直接导致程序中断, 而PHP7+ 则提供捕获并且处理的能力, 让程序继续执行下去, 为程序员提供更灵活的选择10. 新增匿名类
通过 new class 来实例化一个匿名类,可以用来替代一些"用后即焚"的完整类定义
例如:
<?php
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;
// 使用 new class 创建匿名类
$app->setLogger(new class implements Logger {public function log(string $msg) {print($msg);}
});
$app->getLogger()->log("我的第一条日志");
结果:我的第一条日志11. 新增两个更安全的伪随机生成器函数random_bytes()和random_int()12. Closure::call()
有着更好的性能,将一个闭包函数动态绑定到一个新的对象实例并调用执行该函数
例如:
<?php
class A {private $x = 1;
}
// PHP 7 之前版本定义闭包函数代码
$getXCB = function() {return $this->x;
};
// 闭包函数绑定到类 A 上
$getX = $getXCB->bindTo(new A, 'A');
echo $getX();// PHP 7+ 代码
$getX = function() {return $this->x;
};
echo $getX->call(new A);13. 移除扩展:ereg、mssql、mysql

PHP7.0 的新特性相关推荐

  1. php7.0的新特性

    今天没事,看了看php的文档,记录php7.0的新特性,或者是自己以前不注意的细节: 1.3元运算符 $a有定义,正常写法 $a = 'dongxuemin'; $b = $a ? $a : '董学敏 ...

  2. .NET 4.0 Interop新特性ICustomQueryInterface (转载)

    .NET 4.0 Interop新特性ICustomQueryInterface 在.NET Framework v4.0发布的新功能中,在名字空间System.Runtime.InteropServ ...

  3. .NET Framework 4.0的新特性

    本文将揭示.NET 4.0中的3个新特性:图表控件.SEO支持以及ASP.NET 4可扩展的输出缓存. 图表控件 微软向开发者提供了大量可免费下载的图表控件,可以在.NET 3.5 ASP.NET或W ...

  4. mysql 5.0 php_PHP 5.0的新特性

    PHP 5.0的新特性 最近,读者可以从PHP 4.x版本转移到PHP 5.0版本.正如读者期望的那样,在一个新的主要版本中,它做出了一些重要变更.在这个版本中,PHP后台的Zend引擎经过了完全的重 ...

  5. Tensorflow 2.0的新特性

    Tensorflow 2.0的新特性 几天前,Tensorflow刚度过自己的3岁生日,作为当前最受欢迎的机器学习框架,Tensorflow在这个宝座上已经盘踞了近三年.无论是成熟的Keras,还是风 ...

  6. java 7.0 特性_JDK7.0语法新特性

    JDK7.0语法新特性 1,菱形语法(泛型实例化类型自动推断) List list = new ArrayList<>(); // <>这个真的很像菱形 2,在目前版本中,不可 ...

  7. 盘点Greenplum 6.0六大新特性及展望

    导读:本文介绍Greenplum 6.0的新特性. 作者:王春波 来源:大数据DT(ID:hzdashuju) Greenplum 6.0于2019年9月4日正式发布,内核版本从PostgreSQL ...

  8. C# 8.0 的新特性概览和讲解

    本文转自 https://blog.csdn.net/hez2010/article/details/84036742 C# 8.0 的新特性概览和讲解 前言 新的改变 可空引用类型(Nullable ...

  9. jdk5.0的新特性

    jdk的版本在1.4后变化很大,所以叫jdk5.0 下面是总结jdk5.0的新特性: (1)泛型(***)  泛型简介 泛型是J2SE 5.0最重要的特性.他们让你写一个type(类或接口)和创建一个 ...

最新文章

  1. 在eclipse中反编译并查看jar包的class文件,批量反编译
  2. 成功解决mxnet-tag\mxnet\src\operator\tensor\./matrix_op-inl.h:189: Using target_shape will be deprecated
  3. NEFU709(第K个圆的半径)
  4. koa --- 使用koa-multer和element-ui组件上传头像
  5. PHP 织梦 帝国那个好,帝国、PHPCMS及织梦对比(十):推荐位功能
  6. Kevin专栏---如何制作试用版安装包
  7. python wheel使用_Python wheel.Wheel方法代碼示例
  8. 阿里 开放平台 多伦对话_开放式领导者指南,以开始数字转换对话
  9. c++排序函数_Excel2010 技巧六 (排名函数)
  10. RestTemplate 发送 get 请求使用误区 多值为null
  11. Wireshark实战分析之IP协议(三)
  12. CentOS6源码安装VSFTPD3
  13. 网站服务器带宽多少合适,服务器选择时带宽选多少合适?
  14. 硬盘MBR格式转换GPT
  15. CSS flex属性深入理解
  16. 【C语言】qsort()函数详解
  17. Mybatis实现分页功能
  18. sha256可逆吗_当我们谈“X+区块链”的时候,到底搞懂区块链了吗?
  19. EPLAN无法打开ESS_part001.mdb。处理方法
  20. int 等数据类型的含义

热门文章

  1. Java类和对象的特征
  2. 什么是JPA?SpringBoot 中使用JPA
  3. 宣传python的顺口溜-Python3内置函数——reversed() = 翻转我的世界
  4. document.documentElement与document.body
  5. 彻底解决IDEA输出中文乱码问题
  6. 前端html网页,点击按钮或超链接 弹出 一个登陆的div窗口或者对话框
  7. linux版本kettle 中文乱码,kettle工具同步数据乱码-Linux下乱码问题二
  8. Adaboost算法——详细讲解
  9. W-GAN系 (Wasserstein GAN、 Improved WGAN)
  10. 使用adb命令uninstall卸载不掉手机上的apk时,可以卸载内置app路径