浅谈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中extract()函数的定义和用法
Aug 17 PHP
使用php显示搜索引擎来的关键词
Feb 13 PHP
zf框架的校验器InArray使用示例
Mar 13 PHP
php ci框架中加载css和js文件失败的原因及解决方法
Jul 29 PHP
PHP中的类型约束介绍
May 11 PHP
PHP生成随机密码方法汇总
Aug 27 PHP
php导出csv文件,可导出前导0实例代码
Nov 16 PHP
PHP使用imagick扩展实现合并图像的方法
Apr 25 PHP
PHP简单获取上月、本月、近15天、近30天的方法示例
Jul 03 PHP
PHP读取并输出XML文件数据的简单实现方法
Dec 22 PHP
php使用array_chunk函数将一个数组分割成多个数组
Dec 05 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
杏林同学录(一)
2006/10/09 PHP
php5.2.0内存管理改进
2007/01/22 PHP
解析web文件操作常见安全漏洞(目录、文件名检测漏洞)
2013/06/29 PHP
php树型类实例
2014/12/05 PHP
PHP在innodb引擎下快速代建全文搜索功能简明教程【基于xunsearch】
2016/10/14 PHP
Yii框架实现的验证码、登录及退出功能示例
2017/05/20 PHP
深入理解PHP中mt_rand()随机数的安全
2017/10/12 PHP
自定义Laravel (monolog)日志位置,并增加请求ID的实现
2019/10/17 PHP
javascript中关于执行环境的杂谈
2011/08/14 Javascript
qTip2 精致的基于jQuery提示信息插件
2012/02/17 Javascript
firefox浏览器不支持innerText的解决方法
2013/08/07 Javascript
js实现iframe跨页面调用函数的方法
2014/12/13 Javascript
JavaScript中var关键字的使用详解
2015/08/14 Javascript
jQuery Easyui 验证两次密码输入是否相等
2016/05/13 Javascript
javascript基本数据类型和转换
2017/03/17 Javascript
浅析Angular19 自定义表单控件
2018/01/31 Javascript
详解webpack编译速度提升之DllPlugin
2019/02/05 Javascript
Vue CLI3.0中使用jQuery和Bootstrap的方法
2019/02/28 jQuery
使用Vue父子组件通信实现todolist的功能示例代码
2019/04/11 Javascript
NodeJS实现一个聊天室功能
2019/11/25 NodeJs
three.js 将图片马赛克化的示例代码
2020/07/31 Javascript
Python判断字符串与大小写转换
2015/06/08 Python
Python第三方库的安装方法总结
2016/06/06 Python
Python创建对称矩阵的方法示例【基于numpy模块】
2017/10/12 Python
Python: 传递列表副本方式
2019/12/19 Python
Python 读取有公式cell的结果内容实例方法
2020/02/17 Python
Python 使用双重循环打印图形菱形操作
2020/08/09 Python
Python os库常用操作代码汇总
2020/11/03 Python
纯css3制作网站后台管理面板
2014/12/30 HTML / CSS
Skyscanner波兰:廉价航班
2017/11/07 全球购物
ebookers英国:隶属全球最大的在线旅游公司Expedia
2017/12/28 全球购物
请假条范文大全
2014/04/10 职场文书
同学聚会感言一句话
2015/07/30 职场文书
2016抗战胜利71周年红领巾广播稿
2015/12/18 职场文书
深入解析MySQL索引数据结构
2021/10/16 MySQL
Python采集爬取京东商品信息和评论并存入MySQL
2022/04/12 Python