我整理的PHP 7.0主要新特性


Posted in PHP onJanuary 07, 2016

截止到目前为止,PHP官方已经发布了php7的RC5版本,预计在11月份左右会发布第一个正式版本!现在来说php7的重大特性肯定已经是定型了,不会再有什么变动了。后续一些版本的迭代主要也就是修修bug,优化之类的。下面就来说话我们一直期待的php7.0新特征吧。

1.标量参数类型声明

现在支持字符串(string)、整型(int)、浮点数(float)、及布尔型(bool)参数声明,以前只支持类名、接口、数组及Callable
两种风格:强制转换模式(默认)与严格模式

<?php
// Coercive mode
function sumOfInts(int ...$ints)
{
return array_sum($ints);
}
var_dump(sumOfInts(2, '3', 4.1));

2.返回类型声明

<?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]));

3.??运算符

?? 用于替代需要isset的场合,这是一个语法糖。

<?php
// Fetches the value of $_GET['user'] and returns 'nobody'
// if it does not exist.
$username = $_GET['user'] ?? 'nobody';
// This is equivalent to:
$username = isset($_GET['user']) ? $_GET['user'] : 'nobody';
// Coalescing can be chained: this will return the first
// defined value out of $_GET['user'], $_POST['user'], and
// 'nobody'.
$username = $_GET['user'] ?? $_POST['user'] ?? 'nobody';

4.<=> 比较运算符

就是看两个表达式值的大小,三种关系: = 返回0、< 返回-1、 > 返回 1

<?php
// Integers
echo 1 <=> 1; // 0
echo 1 <=> 2; // -1
echo 2 <=> 1; // 1
// Floats
echo 1.5 <=> 1.5; // 0
echo 1.5 <=> 2.5; // -1
echo 2.5 <=> 1.5; // 1
// Strings
echo "a" <=> "a"; // 0
echo "a" <=> "b"; // -1
echo "b" <=> "a"; // 1

5.define支持定义数组类型的值

php 5.6已经支持CONST 语法定义数组类的常量,PHP7中支持define语法。

<?php
define('ANIMALS', [
'dog',
'cat',
'bird'
]);
echo ANIMALS[1]; // outputs "cat"

6.匿名类

<?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());

7.增加了整除函数 intdiv

小结:

PHP 7在性能方面的突破成为近来最热门的话题之一,目前官方PHP 7.0.0 Beta 2已经发布

新特性

性能提升:PHP 7要比PHP 5.6快两倍

全面一致的64位支持

移除了一些老的不在支持的SAPI(服务器端应用编程端口)和扩展

新增了空接合操作符(??)

PHP 相关文章推荐
一个PHP数组应该有多大的分析
Jul 30 PHP
Look And Say 序列php实现代码
May 22 PHP
PHP采集利器 Snoopy 试用心得
Jul 03 PHP
php开启与关闭错误提示适用于没有修改php.ini的权限
Oct 16 PHP
PHP中大于2038年时间戳的问题处理方案
Mar 03 PHP
图文介绍PHP添加Redis模块及连接
Jul 28 PHP
PHP判断是手机端还是PC端 PHP判断是否是微信浏览器
Mar 15 PHP
PHP5.6新增加的可变函数参数用法分析
Aug 25 PHP
PHP实现图的邻接矩阵表示及几种简单遍历算法分析
Nov 24 PHP
thinkPHP5框架自定义验证器实现方法分析
Jun 11 PHP
php处理多图上传压缩代码功能
Jun 13 PHP
多个Laravel项目如何共用migrations详解
Sep 25 PHP
php上传图片生成缩略图(GD库)
Jan 06 #PHP
joomla数据库操作示例代码
Jan 06 #PHP
Yii清理缓存的方法
Jan 06 #PHP
yii实现model添加默认值的方法(2种方法)
Jan 06 #PHP
如何使用微信公众平台开发模式实现多客服
Jan 06 #PHP
基于PHP技术开发客服工单系统
Jan 06 #PHP
分享php邮件管理器源码
Jan 06 #PHP
You might like
php中常用编辑器推荐
2007/01/02 PHP
php文章内容分页并生成相应的htm静态页面代码
2010/06/07 PHP
php中curl、fsocket、file_get_content三个函数的使用比较
2014/05/09 PHP
老生常谈php 正则中的i,m,s,x,e分别表示什么
2017/03/02 PHP
Laravel5.5新特性之友好报错以及展示详解
2017/08/13 PHP
PHP单元测试框架PHPUnit用法详解
2019/01/23 PHP
PHP文件打开关闭及读写操作示例解析
2020/08/06 PHP
jquery简单体验
2007/01/10 Javascript
Javascript this关键字使用分析
2008/10/21 Javascript
JavaScript数组深拷贝和浅拷贝的两种方法
2014/04/16 Javascript
node.js中的console.time方法使用说明
2014/12/09 Javascript
JavaScript入门教程之引用类型
2016/05/04 Javascript
jQuery 实现评论等级好评差评特效
2016/05/06 Javascript
js轮盘抽奖实例分析
2020/04/17 Javascript
Javascript面试经典套路reduce函数查重
2017/03/23 Javascript
微信小程序模板和模块化用法实例分析
2017/11/28 Javascript
Javascript防止图片拉伸的自适应处理方法
2017/12/26 Javascript
详解vue 数组和对象渲染问题
2018/09/21 Javascript
使用kbone解决Vue项目同时支持小程序问题
2019/11/08 Javascript
详解Python中heapq模块的用法
2016/06/28 Python
用tensorflow实现弹性网络回归算法
2018/01/09 Python
Python实现学校管理系统
2018/01/11 Python
基于python神经卷积网络的人脸识别
2018/05/24 Python
python 字符串和整数的转换方法
2018/06/25 Python
python调用百度地图WEB服务API获取地点对应坐标值
2019/01/16 Python
Python 3 判断2个字典相同
2019/08/06 Python
python 用户交互输入input的4种用法详解
2019/09/24 Python
Kmeans均值聚类算法原理以及Python如何实现
2020/09/26 Python
俄罗斯一家时尚女装商店:Charuel
2019/12/04 全球购物
分别介绍一下Session Bean和Entity Bean
2015/03/13 面试题
环境科学专业教师求职信
2014/07/12 职场文书
农村党员对照检查材料
2014/09/24 职场文书
三人合伙协议书范本
2014/10/29 职场文书
2015小学教育教学工作总结
2015/07/21 职场文书
浅谈Redis 中的过期删除策略和内存淘汰机制
2022/04/03 Redis
使用Nginx的访问日志统计PV与UV
2022/05/06 Servers