浅谈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 相关文章推荐
建立文件交换功能的脚本(一)
Oct 09 PHP
PHP __autoload函数(自动载入类文件)的使用方法
Feb 04 PHP
注册页面之前先验证用户名是否存在的php代码
Jul 14 PHP
Win下如何安装PHP的APC拓展
Aug 07 PHP
php与flash as3 socket通信传送文件实现代码
Aug 16 PHP
php图片水印添加、压缩、剪切的封装类实现
Apr 18 PHP
最准确的php截取字符串长度函数
Oct 29 PHP
微信支付开发维权通知实例
Jul 12 PHP
ThinkPHP 整合Bootstrap Ajax分页样式
Dec 23 PHP
PHP递归遍历文件夹去除注释并压缩php源代码的方法示例
May 23 PHP
laravel按天、按小时,查询数据的实例
Oct 09 PHP
laravel 解决crontab不执行的问题
Oct 22 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中str_replace函数使用小结
2008/10/11 PHP
PHP执行批量mysql语句的解决方法
2013/05/02 PHP
php获取中文拼音首字母类和函数分享
2014/04/24 PHP
ThinkPHP空模块和空操作详解
2014/06/30 PHP
php实现基于pdo的事务处理方法示例
2017/07/21 PHP
jQuery 选择器理解
2010/03/16 Javascript
FF(火狐)浏览器无法执行window.close()解决方案
2014/11/13 Javascript
深入分析下javascript中的[]()+!
2015/07/07 Javascript
jquery mobile 实现自定义confirm确认框效果的简单实例
2016/06/17 Javascript
JavaScript实现反转字符串的方法详解
2017/04/27 Javascript
JS图片预加载插件详解
2017/06/21 Javascript
jQuery中的for循环var与let的区别
2018/04/21 jQuery
JS实现中英文混合文字溢出友好截取功能
2018/08/06 Javascript
Vue项目中如何使用Axios封装http请求详解
2019/10/23 Javascript
js实现九宫格抽奖
2020/03/19 Javascript
Vue简单实现原理详解
2020/05/07 Javascript
Python中将变量按行写入txt文本中的方法
2018/04/03 Python
Python Flask前后端Ajax交互的方法示例
2018/07/31 Python
python实现Flappy Bird源码
2018/12/24 Python
python+ffmpeg批量去视频开头的方法
2019/01/09 Python
python 格式化输出百分号的方法
2019/01/20 Python
Python安装与基本数据类型教程详解
2019/05/29 Python
用python3 urllib破解有道翻译反爬虫机制详解
2019/08/14 Python
django执行原始查询sql,并返回Dict字典例子
2020/04/01 Python
python自动脚本的pyautogui入门学习
2020/04/01 Python
Python xlwings插入Excel图片的实现方法
2021/02/26 Python
be2台湾单身男女交友:全球网路婚姻介绍的领导品牌
2019/10/11 全球购物
会计学生自我鉴定
2014/02/06 职场文书
法制报告会主持词
2014/04/02 职场文书
个人学习总结范文
2015/02/15 职场文书
单独二胎证明
2015/06/24 职场文书
cf战队宣传语
2015/07/13 职场文书
植树节新闻稿
2015/07/17 职场文书
解决Pytorch dataloader时报错每个tensor维度不一样的问题
2021/05/28 Python
Python标准库之typing的用法(类型标注)
2021/06/02 Python
MySQL 数据库 增删查改、克隆、外键 等操作
2022/05/11 MySQL