浅谈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 相关文章推荐
一个好用的分页函数
Nov 16 PHP
MySql 按时间段查询数据方法(实例说明)
Nov 02 PHP
PHP 学习路线与时间表
Feb 21 PHP
PHP 全角转半角实现代码
May 16 PHP
PHP中“简单工厂模式”实例代码讲解
Sep 04 PHP
php将textarea数据提交到mysql出现很多空格的解决方法
Dec 19 PHP
CI映射(加载)数据到view层的方法
Mar 28 PHP
Zend Framework校验器Zend_Validate用法详解
Dec 09 PHP
laravel如何开启跨域功能示例详解
Aug 31 PHP
php curl操作API接口类完整示例
May 21 PHP
Laravel 创建可以传递参数 Console服务的例子
Oct 14 PHP
WordPress免插件实现面包屑导航的示例代码
Aug 20 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
克隆一个新项目的快捷方式
2013/04/10 PHP
php实现数组中索引关联数据转换成json对象的方法
2015/07/08 PHP
php结合md5实现的加密解密方法
2016/01/25 PHP
php简单实现短网址(短链)还原的方法(测试可用)
2016/05/09 PHP
Docker 如何布置PHP开发环境
2016/06/21 PHP
简单谈谈PHP中的Reload操作
2016/12/12 PHP
Extjs中常用表单介绍与应用
2010/06/07 Javascript
jquery中post方法用法实例
2014/10/21 Javascript
JS显示下拉列表框内全部元素的方法
2015/03/31 Javascript
利用jsonp跨域调用百度js实现搜索框智能提示
2016/08/24 Javascript
清除输入框内的空格
2016/12/21 Javascript
nodejs微信扫码支付功能实现
2018/02/17 NodeJs
vue 开发一个按钮组件的示例代码
2018/03/27 Javascript
解决Vue中引入swiper,在数据渲染的时候,发生不滑动的问题
2018/09/27 Javascript
Bootstrap的aria-label和aria-labelledby属性实例详解
2018/11/02 Javascript
vue不操作dom实现图片轮播的示例代码
2019/12/18 Javascript
JavaScript中的this/call/apply/bind的使用及区别
2020/03/06 Javascript
[01:29:17]RNG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.23
2019/09/05 DOTA
Python守护进程用法实例分析
2015/06/04 Python
深入讲解Python编程中的字符串
2015/10/14 Python
Python端口扫描简单程序
2016/11/10 Python
python3大文件解压和基本操作
2017/12/15 Python
15行Python代码带你轻松理解令牌桶算法
2018/03/21 Python
numpy中实现二维数组按照某列、某行排序的方法
2018/04/04 Python
Python FtpLib模块应用操作详解
2019/12/12 Python
Pytorch Tensor的统计属性实例讲解
2019/12/30 Python
浅谈Tensorflow 动态双向RNN的输出问题
2020/01/20 Python
在pycharm中使用matplotlib.pyplot 绘图时报错的解决
2020/06/01 Python
python 下载m3u8视频的示例代码
2020/11/11 Python
python基于win32api实现键盘输入
2020/12/09 Python
毕业生个人求职的自我评价
2013/10/28 职场文书
出纳员岗位职责
2014/03/13 职场文书
代领报检证委托书范本
2014/10/11 职场文书
实习生矿工检讨书
2014/10/13 职场文书
2015年电教工作总结
2015/05/26 职场文书
谢师宴学生致辞
2015/07/27 职场文书