我整理的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 相关文章推荐
解决MySQL中文输出变成问号的问题
Jun 05 PHP
php 正则表达式小结
Aug 31 PHP
PHP计划任务、定时执行任务的实现代码
Apr 23 PHP
提高php运行速度的一些小技巧分享
Jul 03 PHP
解析php框架codeigniter中如何使用框架的session
Jun 24 PHP
php替换字符串中间字符为省略号的方法
May 04 PHP
Yii实现显示静态页的方法
Apr 25 PHP
PHP QRCODE生成彩色二维码的方法
May 19 PHP
浅谈PHP的$_SERVER[SERVER_NAME]
Feb 04 PHP
PHP实现的Redis多库选择功能单例类
Jul 27 PHP
PHP中soap用法示例【SoapServer服务端与SoapClient客户端编写】
Dec 25 PHP
php设计模式之备忘模式分析【星际争霸游戏案例】
Mar 24 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递归算法和应用方法介绍
2013/04/15 PHP
php从csv文件读取数据并输出到网页的方法
2015/03/14 PHP
php进行ip地址掩码运算处理的方法
2016/07/11 PHP
PHP运用foreach神奇的转换数组(实例讲解)
2018/02/01 PHP
PHP让网站移动访问更加友好方法
2019/02/14 PHP
JavaScript 事件系统
2010/07/22 Javascript
一个判断抢购时间是否到达的简单的js函数
2014/06/23 Javascript
AngularJS中的模块详解
2015/01/29 Javascript
javascript实现自动输出文本(打字特效)
2015/08/27 Javascript
全面解析Bootstrap布局组件应用
2016/02/22 Javascript
一个简单不报错的summernote 图片上传案例
2016/07/11 Javascript
浅谈vue的props,data,computed变化对组件更新的影响
2018/01/16 Javascript
JavaScript 正则命名分组【推荐】
2018/06/07 Javascript
jQuery实现简单QQ聊天框
2020/08/27 jQuery
[55:42]VG vs VGJ.T 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
用Python编写生成树状结构的文件目录的脚本的教程
2015/05/04 Python
python GUI库图形界面开发之PyQt5信号与槽机制、自定义信号基础介绍
2020/02/25 Python
一篇文章搞懂python的转义字符及用法
2020/09/03 Python
如何使用scrapy中的ItemLoader提取数据
2020/09/30 Python
django使用channels实现通信的示例
2020/10/19 Python
python自动化办公操作PPT的实现
2021/02/05 Python
法国隐形眼镜网站:VisionDirect.fr
2020/03/03 全球购物
String是最基本的数据类型吗?
2013/06/13 面试题
长青弘远的面试题
2012/06/09 面试题
酒店司机岗位职责
2013/12/14 职场文书
采购员的工作职责
2013/12/26 职场文书
企业军训感言
2014/02/08 职场文书
电子商务专业求职信
2014/03/08 职场文书
2014年党建工作汇报材料
2014/10/27 职场文书
先进个人事迹材料
2014/12/29 职场文书
病假条格式范文
2015/08/17 职场文书
小学数学国培研修日志
2015/11/13 职场文书
就业指导讲座心得体会
2016/01/15 职场文书
导游词之西安大清真寺
2019/12/17 职场文书
Mysql实现简易版搜索引擎的示例代码
2021/08/30 MySQL
GO语言异常处理分析 err接口及defer延迟
2022/04/14 Golang