浅谈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 相关文章推荐
一个捕获函数输出的函数
Feb 14 PHP
不用mod_rewrite直接用php实现伪静态化页面代码
Oct 04 PHP
PHP入门学习笔记之一
Oct 12 PHP
采集邮箱的php代码(抓取网页中的邮箱地址)
Jul 17 PHP
解析在apache里面给php写虚拟目录的详细方法
Jun 24 PHP
解析php取整的几种方式
Jun 25 PHP
PHP MySql增删改查的简单实例
Jun 21 PHP
Yii框架弹出框功能示例
Jan 07 PHP
PHP钩子与简单分发方式实例分析
Sep 04 PHP
PHP框架实现WebSocket在线聊天通讯系统
Nov 21 PHP
PHP pthreads v3下同步处理synchronized用法示例
Feb 21 PHP
gearman中任务的优先级和返回状态实例分析
Feb 27 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学习之php4与php5之间会穿梭一点点感悟
2007/05/03 PHP
PHP运行模式的深入理解
2013/06/03 PHP
ci检测是ajax还是页面post提交数据的方法
2014/11/10 PHP
php删除文本文件中重复行的方法
2015/04/28 PHP
CentOS系统中PHP安装扩展的方式汇总
2017/04/09 PHP
Docker搭建自己的PHP开发环境
2018/02/24 PHP
javascript 数组排序函数
2009/08/20 Javascript
javascript学习笔记(三) String 字符串类型介绍
2012/06/19 Javascript
js防止表单重复提交实现代码
2012/09/05 Javascript
document.createElement()用法
2013/03/13 Javascript
js 程序执行与顺序实现详解
2013/05/13 Javascript
jquery数据验证插件(自制,简单,练手)实例代码
2013/10/24 Javascript
js中日期的加减法
2015/05/06 Javascript
JQuery通过AJAX从后台获取信息显示在表格上并支持行选中
2015/09/15 Javascript
Bootstrap实现下拉菜单效果
2016/04/29 Javascript
使用原生的javascript来实现轮播图
2017/02/24 Javascript
xmlplus组件设计系列之图标(ICON)(1)
2017/05/05 Javascript
解决Mac下安装nmp的淘宝镜像失败问题
2018/05/16 Javascript
浅析Vue实例以及生命周期
2018/08/14 Javascript
解析JS在获取当前月的最后一天遇到的坑
2019/08/30 Javascript
利用React高阶组件实现一个面包屑导航的示例
2020/08/23 Javascript
使用python实现strcmp函数功能示例
2014/03/25 Python
Python深入学习之对象的属性
2014/08/31 Python
python 接口返回的json字符串实例
2018/03/27 Python
Python高级用法总结
2018/05/26 Python
python 3.6.4 安装配置方法图文教程
2018/09/18 Python
python 字典 setdefault()和get()方法比较详解
2019/08/07 Python
在ipython notebook中使用argparse方式
2020/04/20 Python
Django实现随机图形验证码的示例
2020/10/15 Python
网站域名和主机:Domain.com
2019/04/01 全球购物
外企财务年会演讲稿
2014/01/03 职场文书
转党组织关系介绍信
2014/01/08 职场文书
教导处工作制度
2014/01/18 职场文书
环境科学专业教师求职信
2014/07/12 职场文书
上帝为你开了一扇窗之Tkinter常用函数详解
2021/06/02 Python
java executor包参数处理功能 
2022/02/15 Java/Android