PHP 7 详解
  • 介绍
  • PHP 7 安装
  • PHP 7.0.x 新特性
    • OOP 特性
      • 类型声明
      • 命名空间与use关键词批量声明
      • 匿名类
      • Throwable 接口
    • 新增操作符
      • 太空飞船操作符(<=>)
      • null 合并运算符(??)
    • 统一变量语法
    • 其他特性和变更
      • 常量数组
      • Switch 中的多个default默认值
      • Session_start 函数中的参数数组
      • Unserialize 函数引入过滤器
      • 整数除法函数 intdiv()
      • 补充*其他特性和变更
    • 补充*新函数
    • 补充*新的全局常量
    • 补充*变更的函数
    • 补充*摒弃一些老式的写法
    • 补充*不向后兼容的变更
    • 补充*在SAPI模块的变化
    • 补充*PHP7底层性能优化
  • PHP 7.1.x 新特性
    • 新特性
      • 可为空(Nullable)类型
      • 对称阵列解构
      • Void 函数
      • 类常量访问权限控制
      • 多异常捕获处理
      • list()现在支持键名
      • 支持为负的字符串偏移量
      • 补充*其他特性与变更
    • 补充*新的函数
    • 补充*新增的全局常量
    • 补充:不向后兼容的变更
    • 补充*废弃的特性
    • 补充*变更的函数
    • 补充*其他的变更
  • PHP7 开发工具
    • Eclipse 安装与配置
  • PHP 标准规范及开发技巧
    • PHP 标准规范 - PSR
    • PHP 开发技巧
    • 面向对象编程的基本原则
  • PHP7调试与性能分析
    • 调试 - Xdebug安装配置
      • 使用Eclipse调试
    • 性能分析 - Xhprof
    • 性能分析 - Vld
  • 附录*Ubuntu环境php开发配置
  • 附录*使用php开发扩展
  • 附录*浏览器插件
  • 附录*第三方类库
  • 附录*小问题整理
  • 附录*资料*工具
  • 附录*Composer
  • 附录*前端
  • 附录*进程
  • 附录*PHP的ticks机制
  • 附录* 通过composer发布自己的包
  • 附录*字符编码问题
  • 附录*注释
Powered by GitBook
On this page

Was this helpful?

  1. PHP 7.0.x 新特性
  2. 新增操作符

null 合并运算符(??)

三元运算符经常用到,三元运算符只需一行代码就可以实现if-else的功能。如:

$post = ($_POST['title']) ? $_POST['title'] : NULL;

以上代码理想状态是对的,但是当$_POST、$_POST['title']不存在,或者为null时,PHP就会抛出 Notice: Undefined index: title in ... 错误。为了解决和这个问题,一般这样写

$post = isset($_POST['title']) ? $_POST['title'] : NULL;

这样写解决了报错的问题,但是重复书写了代码。PHP7中合并运算符,在第一个操作数存在时,可以直接返回,不然则返回第二个操作数,代码如下:

$post = $_POST['title'] ?? NULL;

合并运算符检查$_POST['title'],是否存在如果存在则返回$_POST['title'],否则返回NULL

合并运算符的另一个的好处是可以连续使用,代码如下:

$title = $_POST['title'] ?? $_GET['title'] ?? 'No POST or GET';

上面的代码执行时会先检查第一个操作符是否存在,若存在则直接返回,若不存在则检查第二个操作数。此时第二个合并操作符开始生效,它会检查第二个操作数是否存在,若存在则返回,若不存在则返回右边的值。

如果用老的代码为:

if (isset($_POST['title'])) {
    $title = $_POST['title'];
} elseif (isset($_GET['title'])) {
    $title = $_GET['title'];
} else {
    $title = 'No POST or GET';
}
Previous太空飞船操作符(<=>)Next统一变量语法

Last updated 6 years ago

Was this helpful?