我整理的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 相关文章推荐
不用数据库的多用户文件自由上传投票系统(1)
Oct 09 PHP
PHP 手机归属地查询 api
Feb 08 PHP
PHP 函数执行效率的小比较
Oct 17 PHP
PHP中time(),date(),mktime()区别介绍
Sep 28 PHP
php分页函数完整实例代码
Sep 22 PHP
C# WinForm中实现快捷键自定义设置实例
Jan 23 PHP
使用PHP实现生成HTML静态页面
Nov 18 PHP
PHP判断手机是IOS还是Android
Dec 09 PHP
yii2.0使用Plupload实现带缩放功能的多图上传
Dec 22 PHP
详解php实现页面静态化原理
Jun 21 PHP
PHP多种序列化/反序列化的方法详解
Jun 23 PHP
使用Git实现Laravel项目的自动化部署
Nov 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
在Windows中安装Apache2和PHP4的权威指南
2006/10/09 PHP
关于在php.ini中添加extension=php_mysqli.dll指令的说明
2007/06/14 PHP
PHP中实现汉字转区位码应用源码实例解析
2010/06/14 PHP
smarty缓存用法分析
2014/12/16 PHP
TNC vs BOOM BO3 第一场2.13
2021/03/10 DOTA
基于jquery的3d效果实现代码
2011/03/23 Javascript
简短几句jquery代码的实现一个图片向上滚动切换
2011/09/02 Javascript
jQuery.buildFragment使用方法及思路分析
2013/01/07 Javascript
将HTML格式的String转化为HTMLElement的实现方法
2014/08/07 Javascript
js实现ArrayList功能附实例代码
2014/10/29 Javascript
Redis基本知识、安装、部署、配置笔记
2015/03/05 Javascript
解决拦截器对ajax请求的拦截实例详解
2016/12/21 Javascript
JavaScript中localStorage对象存储方式实例分析
2017/01/12 Javascript
详解node nvm进行node多版本管理
2017/10/21 Javascript
jQuery实现的电子时钟效果完整示例
2018/04/28 jQuery
Element Input输入框的使用方法
2020/07/26 Javascript
python使用PythonMagick将jpg图片转换成ico图片的方法
2015/03/26 Python
基于Python的文件类型和字符串详解
2017/12/21 Python
python数据批量写入ScrolledText的优化方法
2018/10/11 Python
python绘制热力图heatmap
2020/03/23 Python
python 字典访问的三种方法小结
2019/12/05 Python
Python模块的制作方法实例分析
2019/12/21 Python
浅析Python 简单工厂模式和工厂方法模式的优缺点
2020/07/13 Python
基于opencv实现简单画板功能
2020/08/02 Python
在线服装零售商:SheIn
2016/07/22 全球购物
信息系统专业个人求职信范文
2013/12/07 职场文书
计算机维护专业推荐信
2014/02/27 职场文书
大学学生会竞选演讲稿
2014/04/25 职场文书
职务说明书范文
2014/05/07 职场文书
培训研修方案
2014/06/06 职场文书
合作协议书范文
2014/08/20 职场文书
2015年幼儿园新年寄语
2014/12/08 职场文书
2015年妇委会工作总结
2015/05/22 职场文书
委托收款证明
2015/06/23 职场文书
MySQL如何使用使用Xtrabackup进行备份和恢复
2021/06/21 MySQL
Python尝试实现蒙特卡罗模拟期权定价
2022/04/21 Python