我整理的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 相关文章推荐
分页显示Oracle数据库记录的类之二
Oct 09 PHP
我的论坛源代码(九)
Oct 09 PHP
PHP上传文件时文件过大$_FILES为空的解决方法
Nov 26 PHP
js和php邮箱地址验证的实现方法
Jan 09 PHP
php实现的太平洋时间和北京时间互转的自定义函数分享
Aug 19 PHP
PHP 反射(Reflection)使用实例
May 12 PHP
PHP Web木马扫描器代码分享
Sep 06 PHP
PHP MSSQL 分页实例
Apr 13 PHP
Yii2 rbac权限控制之rule教程详解
Jun 23 PHP
浅谈PHP中new self()和new static()的区别
Aug 11 PHP
PHP PDOStatement::setAttribute讲解
Feb 01 PHP
Laravel中GraphQL接口请求频率实战记录
Sep 01 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
Look And Say 序列php实现代码
2011/05/22 PHP
php将url地址转化为完整的a标签链接代码(php为url地址添加a标签)
2014/01/17 PHP
PHP实现动态web服务器方法
2015/07/29 PHP
Yii框架防止sql注入,xss攻击与csrf攻击的方法
2016/10/18 PHP
PHP mysqli事务操作常用方法分析
2017/07/22 PHP
js的event详解。
2006/09/06 Javascript
javascript 构建一个xmlhttp对象池合理创建和使用xmlhttp对象
2010/01/15 Javascript
jquery fancybox ie6不显示关闭按钮的解决办法
2013/12/25 Javascript
jquery 鼠标滑动显示详情应用示例
2014/01/24 Javascript
nodejs npm包管理的配置方法及常用命令介绍
2014/06/05 NodeJs
node.js中的buffer.Buffer.isBuffer方法使用说明
2014/12/14 Javascript
AngularJS使用ngOption实现下拉列表的实例代码
2016/01/23 Javascript
学习javascript文件加载优化
2016/02/19 Javascript
微信小程序 利用css实现遮罩效果实例详解
2017/01/21 Javascript
JavaScript new对象的四个过程实例浅析
2018/07/31 Javascript
浅谈redux, koa, express 中间件实现对比解析
2019/05/23 Javascript
vue elementui 实现搜索栏公共组件封装的实例代码
2020/01/20 Javascript
[13:39]2014 DOTA2华西杯精英邀请赛 5 25 NewBee VS DK第一场
2014/05/26 DOTA
在Python中使用元类的教程
2015/04/28 Python
Python+django实现文件下载
2016/01/17 Python
python数据结构之链表的实例讲解
2017/07/25 Python
python使用KNN算法手写体识别
2018/02/01 Python
PyTorch上实现卷积神经网络CNN的方法
2018/04/28 Python
TensorFlow用expand_dim()来增加维度的方法
2018/07/26 Python
Selenium chrome配置代理Python版的方法
2018/11/29 Python
Pycharm 设置默认头的图文教程
2019/01/17 Python
Django基础知识 web框架的本质详解
2019/07/18 Python
python3.6 tkinter实现屏保小程序
2019/07/30 Python
PyTorch 普通卷积和空洞卷积实例
2020/01/07 Python
使用CSS媒体查询(Media Queries)和JavaScript判断浏览器设备类型的方法
2014/04/03 HTML / CSS
聘用意向书范本
2014/04/01 职场文书
合作协议书模板
2014/10/10 职场文书
2015年学校工作总结范文
2015/04/20 职场文书
公司联欢会主持词
2015/07/04 职场文书
Vue过滤器(filter)实现及应用场景详解
2021/06/15 Vue.js
使用CSS定位HTML元素的实现方法
2022/07/07 HTML / CSS