我整理的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 13 PHP
PHP XML数据解析代码
May 26 PHP
php守护进程 加linux命令nohup实现任务每秒执行一次
Jul 04 PHP
PHP将整个网站生成HTML纯静态网页的方法总结
Feb 05 PHP
php处理restful请求的路由类分享
Feb 27 PHP
PHP5.3安装Zend Guard Loader图文教程
Sep 29 PHP
深入剖析浏览器退出之后php还会继续执行么
May 17 PHP
Apache无法自动跳转却显示目录的解决方法
Nov 30 PHP
PHP 布尔值的自增与自减的实现方法
May 03 PHP
PHP封装的page分页类定义与用法完整示例
Dec 24 PHP
PHP数据对象映射模式实例分析
Mar 29 PHP
宝塔面板出现“open_basedir restriction in effect. ”的解决方法
Mar 14 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
信用卡效验程序
2006/10/09 PHP
第七章 php自定义函数实现代码
2011/12/30 PHP
ThinkPHP Mobile使用方法简明教程
2014/06/18 PHP
php时间函数用法分析
2016/05/28 PHP
laravel Model 执行事务的实现
2019/10/10 PHP
在JavaScript中实现命名空间
2006/11/23 Javascript
jquery应该如何来设置改变按钮input的onclick事件
2012/12/10 Javascript
js 操作select和option常用代码整理
2012/12/13 Javascript
jquery 单引号和双引号的区别及使用注意
2013/07/31 Javascript
仿iframe效果Aajx文件上传实例
2016/11/18 Javascript
Vue数据驱动模拟实现5
2017/01/13 Javascript
通过jsonp获取json数据实现AJAX跨域请求
2017/01/22 Javascript
详解AngularJS 路由 resolve用法
2017/04/24 Javascript
JS实现数组去重方法总结(六种方法)
2017/07/14 Javascript
jfinal与bootstrap的登出实战详解
2017/11/27 Javascript
bootstrapTable+ajax加载数据 refresh更新数据
2018/08/31 Javascript
详解JavaScript中操作符和表达式
2018/09/12 Javascript
vue中如何添加百度统计代码
2020/12/19 Vue.js
SpringBoot+Vue 前后端合并部署的配置方法
2020/12/30 Vue.js
Python编程中用close()方法关闭文件的教程
2015/05/24 Python
Python新手入门最容易犯的错误总结
2017/04/24 Python
python实现flappy bird游戏
2018/12/24 Python
Django rest framework jwt的使用方法详解
2019/08/08 Python
python3实现弹弹球小游戏
2019/11/25 Python
TensorFlow学习之分布式的TensorFlow运行环境
2020/02/05 Python
python如何求100以内的素数
2020/05/27 Python
英国在线花园中心:You Garden
2018/06/03 全球购物
Kathmandu新西兰官网:新西兰户外运动品牌
2019/07/27 全球购物
如何整合JQuery和Prototype
2014/01/31 面试题
公务员的自我鉴定
2013/10/26 职场文书
十佳美德少年事迹材料
2014/02/05 职场文书
网页美工求职信
2014/02/15 职场文书
解除劳动合同协议书
2014/04/14 职场文书
雨花台导游词
2015/02/06 职场文书
2015年办公室文员工作总结
2015/04/24 职场文书
社区敬老月活动总结
2015/05/07 职场文书