浅谈PHP5.6 与 PHP7.0 区别


Posted in PHP onOctober 09, 2019

两者的区别

  • PHP7.0 比PHP5.6性能提升了两倍。
  • PHP7.0全面一致支持64位。
  • PHP7.0之前出现的致命错误,都改成了抛出异常。
  • 增加了空结合操作符(??)。效果相当于三元运算符。
  • PHP7.0新增了函数的返回类型声明。
  • PHP7.0新增了标量类型声明。
    • PHP 7 中的函数的形参类型声明可以是标量。在 PHP 5 中只可以是类名、接口、array 或者 callable (PHP 5.4,即可以是函数,包括匿名函数),现在也可以使用 string、int、float和 bool 了。
  • 新增加了匿名类。
    • PHP 5.3 开始有了匿名函数,现在又新增了匿名类;
  • PHP7.0之后溢移除了一些老的不再支持的SAPI(服务器端应用编程端口)和扩展。
  • define 可以定义常量数组。

PHP标量类型

#主要分为两种模式,强制性模式和严格模式
declare(strict_types=1)
#1表示严格类型校验模式,作用于函数调用和返回语句;0表示弱类型校验模式。

返回类型声明

PHP 7 增加了对返回类型声明的支持。 类似于参数类型声明,返回类型声明指明了函数返回值的类型。

<?php

function arraysSum(array ...$arrays): array
{
  return array_map(function(array $array): int {
    return array_sum($array);
  }, $arrays);
}

print_r(arraysSum([1,2,3], [4,5,6], [7,8,9]));

NULL合并运算符

如果变量存在且值不为NULL, 它就会返回自身的值,否则返回它的第二个操作数。

$site = isset($_GET['site']) ? $_GET['site'] : 'wo';
#简写成
$site = $_GET['site'] ??'wo';

太空船操作符(组合比较符)

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

<?php
// 整数
echo 1 <=> 1; // 0
echo 1 <=> 2; // -1
echo 2 <=> 1; // 1

// 浮点数
echo 1.5 <=> 1.5; // 0
echo 1.5 <=> 2.5; // -1
echo 2.5 <=> 1.5; // 1
 
// 字符串
echo "a" <=> "a"; // 0
echo "a" <=> "b"; // -1
echo "b" <=> "a"; // 1
?>

通过 define() 定义常量数组

*使用define()定义常量数组

<?php
define('ANIMALS', [
  'dog',
  'cat',
  'bird'
]);

echo ANIMALS[1]; // 输出 "cat"
?>

使用define()定义常量

<?php
define("CONSTANT", "Hello world.");
echo CONSTANT; // outputs "Hello world."
?>

使用关键字 const 定义常量

<?php
const CONSTANT = 'Hello World';

echo CONSTANT;
?>

匿名类

PHP7 支持持通过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;
$app->setLogger(new class implements Logger {
  public function log(string $msg) {
    echo $msg;
  }
});

var_dump($app->getLogger());
?>

输出:

object(class@anonymous)#2 (0) {
}

参考

新特性

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
PHP的FTP学习(一)
Oct 09 PHP
PHP完整的日历类(CLASS)
Nov 27 PHP
php基础知识:类与对象(4) 范围解析操作符(::)
Dec 13 PHP
将数组写入txt文件 var_export
Apr 21 PHP
解析isset与is_null的区别
Aug 09 PHP
学习php分页代码实例
Oct 24 PHP
php模仿asp Application对象在线人数统计实现方法
Jan 04 PHP
PHP中把对象转换为关联数组代码分享
Apr 09 PHP
基于php实现七牛抓取远程图片
Dec 01 PHP
PHP给前端返回一个JSON对象的实例讲解
May 31 PHP
PHP如何实现阿里云短信sdk灵活应用在项目中的方法
Jun 14 PHP
laravel框架模型中非静态方法也能静态调用的原理分析
Nov 23 PHP
laravel按天、按小时,查询数据的实例
Oct 09 #PHP
laravel多条件查询方法(and,or嵌套查询)
Oct 09 #PHP
Laravel find in set排序实例
Oct 09 #PHP
对laravel in 查询的使用方法详解
Oct 09 #PHP
laravel实现查询最后执行的一条sql语句的方法
Oct 09 #PHP
Laravel使用原生sql语句并调用的方法
Oct 09 #PHP
Laravel 将数据表的数据导出,并生成seeds种子文件的方法
Oct 09 #PHP
You might like
PHP采用自定义函数实现遍历目录下所有文件的方法
2014/08/19 PHP
php+html5实现无刷新图片上传教程
2016/01/22 PHP
JavaScript 变量命名规则
2009/09/23 Javascript
jquery.ui.draggable中文文档
2009/11/24 Javascript
js下获取div中的数据的原理分析
2010/04/07 Javascript
拥抱模块化的JavaScript
2012/03/07 Javascript
js为空或不是对象问题的快速解决方法
2013/12/11 Javascript
用js将内容复制到剪贴板兼容浏览器
2014/03/18 Javascript
extjs 时间范围选择自动判断的实现代码
2014/06/24 Javascript
禁用页面部分JavaScript不是全部而是部分
2014/09/03 Javascript
jquery实现手风琴效果
2015/11/20 Javascript
多种js图片预加载实现方式分享
2016/02/19 Javascript
js的form表单提交url传参数(包含+等特殊字符)的两种解决方法
2016/05/25 Javascript
浅析JavaScript中的对象类型Object
2016/05/26 Javascript
Jquery鼠标放上去显示全名的实现方法
2017/02/06 Javascript
Angular2库初探
2017/03/01 Javascript
js实现简单选项卡功能
2020/03/23 Javascript
[01:00:13]完美世界DOTA2联赛 LBZS vs Forest 第一场 11.07
2020/11/09 DOTA
Python深入学习之上下文管理器
2014/08/31 Python
详解Python中的type()方法的使用
2015/05/21 Python
wx.CheckBox创建复选框控件并响应鼠标点击事件
2018/04/25 Python
python实现二维数组的对角线遍历
2019/03/02 Python
浅谈python常用程序算法
2019/03/22 Python
纯CSS3实现绘制各种图形实现代码详细整理
2012/12/26 HTML / CSS
英国花园、DIY、电器和家居用品商店:Robert Dyas
2019/03/18 全球购物
搞笑获奖感言
2014/01/30 职场文书
美容院经理岗位职责
2014/04/03 职场文书
民事答辩状范本
2015/05/21 职场文书
校运会通讯稿
2015/07/18 职场文书
新闻报道稿范文
2015/07/23 职场文书
2015元旦感言
2015/12/09 职场文书
幼儿园体操比赛口号
2015/12/25 职场文书
《桂花雨》教学反思
2016/02/19 职场文书
Python爬虫数据的分类及json数据使用小结
2021/03/29 Python
PostgreSQL存储过程实用脚本(二):创建函数入门
2021/04/05 PostgreSQL
CSS使用SVG实现动态分布的圆环发散路径动画
2022/12/24 HTML / CSS