浅谈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速度全攻略
Oct 09 PHP
PHP高级OOP技术演示
Aug 27 PHP
php使用Smarty的相关注意事项及访问变量的几种方式
Dec 08 PHP
PHP在不同页面间传递Json数据示例代码
Jun 08 PHP
浅析HTTP消息头网页缓存控制以及header常用指令介绍
Jun 28 PHP
PHP缓存集成库phpFastCache用法
Dec 15 PHP
浅析Yii2 gridview实现批量删除教程
Apr 22 PHP
php递归函数怎么用才有效
Feb 24 PHP
PHP多进程通信-消息队列使用
Mar 08 PHP
PHP中常用的三种设计模式详解【单例模式、工厂模式、观察者模式】
Jun 14 PHP
php面向对象重点知识分享
Sep 27 PHP
PHP getID3类的使用方法学习笔记【附getID3源码下载】
Oct 18 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
phpmyadmin导入(import)文件限制的解决办法
2009/12/11 PHP
PHP chmod 函数与批量修改文件目录权限
2010/05/10 PHP
PHP将session信息存储到数据库的类实例
2015/03/04 PHP
php取得字符串首字母的方法
2015/03/25 PHP
PHP url的pathinfo模式加载不同控制器的简单实现
2016/08/12 PHP
php生成毫秒时间戳的实例讲解
2017/09/22 PHP
BOOM vs RR BO5 第三场 2.14
2021/03/10 DOTA
jquery DIV撑大让滚动条滚到最底部代码
2013/06/06 Javascript
利用cookie记住背景颜色示例代码
2013/11/04 Javascript
jquery easyui combox一些实用的小方法
2013/12/25 Javascript
easyUI combobox实现联动效果
2017/01/17 Javascript
js实现文字跑马灯效果
2017/02/23 Javascript
node.js基于socket.io快速实现一个实时通讯应用
2019/04/23 Javascript
初学node.js中实现删除用户路由
2019/05/27 Javascript
layui输入框只允许输入中文且判断长度的例子
2019/09/18 Javascript
夯基础之手撕javascript继承详解
2020/11/09 Javascript
vue实现广告栏上下滚动效果
2020/11/26 Vue.js
Python编写电话薄实现增删改查功能
2016/05/07 Python
Python数据分析之双色球统计单个红和蓝球哪个比例高的方法
2018/02/03 Python
对python抓取需要登录网站数据的方法详解
2018/05/21 Python
pandas DataFrame 删除重复的行的实现方法
2019/01/29 Python
Python读取stdin方法实例
2019/05/24 Python
Python多线程爬取豆瓣影评API接口
2019/10/22 Python
40个你可能不知道的Python技巧附代码
2020/01/29 Python
pyinstaller将含有多个py文件的python程序做成exe
2020/04/29 Python
解决pyinstaller 打包exe文件太大,用pipenv 缩小exe的问题
2020/07/13 Python
倩碧美国官网:Clinique美国
2016/07/20 全球购物
特步官方商城:Xtep
2017/03/21 全球购物
英语自荐信常用语句
2013/12/13 职场文书
老师给学生的表扬信
2014/01/17 职场文书
2014元旦晚会策划方案
2014/02/19 职场文书
就业推荐表自我鉴定范文
2014/03/21 职场文书
高三霸气励志标语
2014/06/24 职场文书
学历证明范文
2015/06/16 职场文书
MySQL sql_mode的使用详解
2021/05/08 MySQL
浅谈Python中的函数(def)及参数传递操作
2021/05/25 Python