浅谈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中取得image按钮传递的name值
Oct 09 PHP
PHP与SQL注入攻击[一]
Apr 17 PHP
php中突破基于HTTP_REFERER的防盗链措施(stream_context_create)
Mar 29 PHP
解析php中如何直接执行SHELL
Jun 28 PHP
php中Session的生成机制、回收机制和存储机制探究
Aug 19 PHP
ThinkPHP无限级分类原理实现留言与回复功能实例
Oct 31 PHP
常见PHP数据库解决方案分析介绍
Sep 24 PHP
php中namespace use用法实例分析
Jan 22 PHP
利用Laravel事件系统如何实现登录日志的记录详解
May 20 PHP
实例讲解php将字符串输出到HTML
Jan 27 PHP
laravel邮件发送的实现代码示例
Jan 31 PHP
php访问对象中的成员的实例方法
Nov 17 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
ob_start(),ob_start('ob_gzhandler')使用
2006/12/25 PHP
php 将bmp图片转为jpg等其他任意格式的图片
2009/06/21 PHP
调用WordPress函数统计文章访问量及PHP原生计数器的实现
2016/03/21 PHP
php基于自定义函数记录log日志方法
2017/07/21 PHP
PHP 8新特性简介
2020/08/18 PHP
php自动加载代码实例详解
2021/02/26 PHP
Javascript学习笔记2 函数
2010/01/11 Javascript
Json实现异步请求提交评论无需跳转其他页面
2014/10/11 Javascript
JavaScript中实现单体模式分享
2015/01/29 Javascript
Bootstrap 实现查询的完美方法
2016/10/26 Javascript
微信小程序 loading(加载中提示框)实例
2016/10/28 Javascript
Bootstrap Tooltip显示换行和左对齐的解决方案
2017/10/11 Javascript
angularjs实现柱状图动态加载的示例
2017/12/11 Javascript
原生JS实现简单的无缝自动轮播效果
2018/09/26 Javascript
Vue的H5页面唤起支付宝支付功能
2019/04/18 Javascript
Laravel admin实现消息提醒、播放音频功能
2019/07/10 Javascript
微信小程序scroll-view锚点链接滚动跳转功能
2019/12/12 Javascript
如何在JavaScript中等分数组的实现
2020/12/13 Javascript
[29:23]2014 DOTA2国际邀请赛中国区预选赛 LGD-GAMING VS CIS 第一场1
2014/05/23 DOTA
举例详解Python中的split()函数的使用方法
2015/04/07 Python
详解Django中的过滤器
2015/07/16 Python
django开发post接口简单案例,获取参数值的方法
2018/12/11 Python
Django CBV与FBV原理及实例详解
2019/08/12 Python
Python环境Pillow( PIL )图像处理工具使用解析
2019/09/12 Python
利用pytorch实现对CIFAR-10数据集的分类
2020/01/14 Python
利用CSS3参考手册和CSS3代码生成工具加速来学习网页制
2012/07/11 HTML / CSS
移动Web—CSS为Retina屏幕替换更高质量的图片
2012/12/24 HTML / CSS
现代绅士日常奢侈品:Todd Snyder
2019/12/13 全球购物
给面试官的感谢信
2014/02/01 职场文书
班班通校本培训方案
2014/03/12 职场文书
医学求职自荐信
2014/06/21 职场文书
煤矿安全知识竞赛活动总结
2014/07/07 职场文书
教师年终个人总结
2015/02/11 职场文书
2015年小学英语教师工作总结
2015/05/12 职场文书
Go各时间字符串使用解析
2021/04/02 Golang
前端框架ECharts dataset对数据可视化的高级管理
2022/12/24 Javascript