浅谈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 相关文章推荐
linux iconv方法的使用
Oct 01 PHP
PDO版本问题 Invalid parameter number: no parameters were bound
Jan 06 PHP
深入解析PHP的引用计数机制
Jun 14 PHP
360通用php防护代码(使用操作详解)
Jun 18 PHP
php实现数组筛选奇数和偶数示例
Apr 11 PHP
php输入流php://input使用浅析
Sep 02 PHP
PHP实现查询两个数组中不同元素的方法
Feb 23 PHP
PHP对象、模式与实践之高级特性分析
Dec 08 PHP
php 5.4 全新的代码复用Trait详解
Jan 05 PHP
windows下的WAMP环境搭建图文教程(推荐)
Jul 27 PHP
Laravel如何同时连接多个数据库详解
Aug 13 PHP
TP5(thinkPHP5)框架使用ajax实现与后台数据交互的方法小结
Feb 10 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项目的方法
2006/10/09 PHP
js中将多个语句写成一个语句的两种方法小结
2007/12/08 Javascript
jquery.alert 弹出式复选框实现代码
2009/06/15 Javascript
基于jquery的不规则矩形的排列实现代码
2012/04/16 Javascript
dotopAlert 提示用户需安装播放器的代码
2012/09/17 Javascript
18个非常棒的jQuery代码片段
2015/11/02 Javascript
angularjs自定义ng-model标签的属性
2016/01/21 Javascript
一系列Bootstrap导航条使用方法分享
2016/04/29 Javascript
Bootstrap中文本框的宽度变窄并且加入一副验证码图片的实现方法
2016/06/23 Javascript
Jquery和BigFileUpload实现大文件上传及进度条显示
2016/06/27 Javascript
微信小程序实现简单input正则表达式验证功能示例
2017/11/30 Javascript
vue-resource请求实现http登录拦截或者路由拦截的方法
2018/07/11 Javascript
浅谈Vue服务端渲染框架Nuxt的那些事
2018/12/21 Javascript
vue封装一个简单的div框选时间的组件的方法
2019/01/06 Javascript
JavaScript复制变量三种方法实例详解
2020/01/09 Javascript
15个简单的JS编码标准让你的代码更整洁(小结)
2020/07/16 Javascript
解决VUE自定义拖拽指令时 onmouseup 与 click事件冲突问题
2020/07/24 Javascript
python基于右递归解决八皇后问题的方法
2015/05/25 Python
Python自动登录126邮箱的方法
2015/07/10 Python
Python的re模块正则表达式操作
2016/05/25 Python
python 生成器生成杨辉三角的方法(必看)
2017/04/10 Python
Windows下安装Scrapy
2018/10/17 Python
对python 中re.sub,replace(),strip()的区别详解
2019/07/22 Python
对django 模型 unique together的示例讲解
2019/08/06 Python
pandas中ix的使用详细讲解
2020/03/09 Python
Python Selenium破解滑块验证码最新版(GEETEST95%以上通过率)
2021/01/29 Python
台湾网购生鲜第一品牌:i3Fresh爱上新鲜
2017/10/26 全球购物
美国转售二手商品的电子商务平台:BLINQ
2018/12/13 全球购物
测量实习生自我鉴定
2013/09/19 职场文书
机电专业毕业生推荐信
2013/11/10 职场文书
小学模范班主任事迹材料
2014/05/13 职场文书
2014年管理工作总结
2014/11/22 职场文书
小学教师先进事迹材料
2014/12/15 职场文书
爱心募捐通知范文
2015/04/27 职场文书
优秀共产党员主要事迹材料
2015/11/05 职场文书
CSS 使用 resize 实现图片拖拽切换预览功能(强大功能)
2021/08/23 HTML / CSS