浅谈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日历程序
Dec 06 PHP
PHP类的使用 实例代码讲解
Dec 28 PHP
PHP 多维数组排序(usort,uasort)
Jun 30 PHP
php下删除一篇文章生成的多个静态页面
Aug 08 PHP
php expects parameter 1 to be resource, array given 错误
Mar 23 PHP
Linux环境下搭建php开发环境的操作步骤
Jun 17 PHP
phpExcel中文帮助手册之常用功能指南
Aug 18 PHP
9段PHP实用功能的代码推荐
Oct 14 PHP
PHP中使用虚代理实现延迟加载技术
Nov 05 PHP
php实现阿拉伯数字和罗马数字相互转换的方法
Apr 17 PHP
WampServer搭建php环境时遇到的问题汇总
Jul 23 PHP
PHP实现的限制IP投票程序IP来源分析
May 04 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
多文件上传的例子
2006/10/09 PHP
PHP将整个网站生成HTML纯静态网页的方法总结
2012/02/05 PHP
YII CLinkPager分页类扩展增加显示共多少页
2016/01/29 PHP
JavaScript高级程序设计 读书笔记之十 本地对象Date日期
2012/02/27 Javascript
jquery数据验证插件(自制,简单,练手)实例代码
2013/10/24 Javascript
深入浅析AngularJS和DataModel
2016/02/16 Javascript
AngularJS基础 ng-selected 指令简单示例
2016/08/03 Javascript
使用Angular.js开发的注意事项
2016/10/19 Javascript
解决拦截器对ajax请求的拦截实例详解
2016/12/21 Javascript
js时间控件只显示年月
2017/01/08 Javascript
BackBone及其实例探究_动力节点Java学院整理
2017/07/14 Javascript
vue实现自定义多选与单选的答题功能
2018/07/05 Javascript
js实现左右两侧浮动广告
2018/07/09 Javascript
jquery3和layui冲突导致使用layui.layer.full弹出全屏iframe窗口时高度152px问题
2019/05/12 jQuery
微信公众号生成新浪短网址的实现(快速生成)
2019/08/18 Javascript
js 获取本周、上周、本月、上月、本季度、上季度的开始结束日期
2020/02/01 Javascript
基于Python的文件类型和字符串详解
2017/12/21 Python
python list删除元素时要注意的坑点分享
2018/04/18 Python
kaggle+mnist实现手写字体识别
2018/07/26 Python
Python实现拷贝/删除文件夹的方法详解
2018/08/29 Python
python3 自动识别usb连接状态,即对usb重连的判断方法
2019/07/03 Python
python通过matplotlib生成复合饼图
2020/02/06 Python
pycharm的python_stubs问题
2020/04/08 Python
Boden澳大利亚官网:英国在线服装公司
2018/08/05 全球购物
Sunglasses Shop英国:欧洲领先的太阳镜在线供应商之一
2018/09/19 全球购物
如何获取某个日期是当月的最后一天
2013/12/05 面试题
销售文员的岗位职责
2013/11/20 职场文书
2014年幼儿园元旦活动方案
2014/02/13 职场文书
银行行长竞聘演讲稿
2014/04/23 职场文书
毕业生代领毕业材料的授权委托书
2014/09/29 职场文书
先进班组事迹材料
2014/12/25 职场文书
工会积极分子个人总结
2015/03/03 职场文书
青春雷锋观后感
2015/06/10 职场文书
《青山不老》教学反思
2016/02/22 职场文书
PHP实现两种排课方式
2021/06/26 PHP
SpringBoot快速入门详解
2021/07/21 Java/Android