浅谈PHP7的新特性
我以前用过的php的最高版本是php5.6。在换新工作之后,公司使用的是PHP7。据说PHP7的性能比之前提高很多。下面整理下php7的新特性。力求简单了解。不做深入研究。
1.变量类型声明
- 函数的参数使用严格模式时,如果传入的参数数据类型不一致会返回一个
TypeError
异常 - 可声明的数据类型有:Class/interface、self、array、callback、bool、float、int、string。[参考资料-函数参数](http://php.net/manual/zh/functions.arguments.php#functions.arguments.type-declaration)
2.增加了返回值类型声明。
- 现在可以指定函数的返回值的数据类型了。
- 返回值可声明类型,参考变量类型声明。
function hasReturn() : bool
{
}
3.null合并运算符
- 这个特性很好啊。很多三元表达式+isset()的写法可以用这种方法来写了。
- null合并运算符:如果变量存在且值不为NULL, 它就会返回自身的值,否则返回它的第二个操作数。 很像mysql的ifnull()。
$value = $_GET['memc_codes'] ?? '没使用优惠券啊';
4. 太空船操作符
- 用于比较两个表达式,判断他们之间的大小关系,小于、等于、大于分别返回-1,0,1.
echo 1 <=> 1;
echo 1 <=> 2;
echo 2 <=> 1;
5. defin() 可以定义数组常量
- 也就是说常量可以被定义成数组
6. 可以通过new class来实例化一个匿名类
- 匿名类,可以用完就扔。
7. 支持 Unicode codepoint 转译语
8. Closure::call() 暂时绑定一个方法到对象上闭包并立即调用
class A { private $lang = 'php';}
$getLang = function() { return $this->lang;};
echo $getLang->call(new A); // 暂时将getLang函数绑定到A上,并执行它
9. unserialize() 第二个参数可以对反序列化的数据进行过滤
- 防止代码注入
10. 新增intlChar用于操作多字符集的unicode字符
11. assert() 增加,写codeception更方便了
- assert() 现在是一个语言结构。第一个可以是参数是表达式。
12. 一个use可以导入多个类了
use model\A,B,C;
13. 生成器可以返回表达式,并且通过调用Generator::getReturn()方法来获取生成器的值。
$gen = (function(){
yield 1;
return 3;
})();
foreach ($gen as $val) {
echo $val,PHP_EOL;
}
echo $gen->getReturn(),PHP_EOL; ## 这里
14. 生成器中可以使用 yield from引入其他生成器
function gen() {
yield 1;
yield from gen2();
}
function gen2() {
yield 3;
yield 4;
}
froeach ($gen as $val) {
echo $val,PHP_EOL;
}
15. 新增加了正常函数intdiv()
echo intdiv(10,3); // 3
16. session_start() 新增参数可以修改系统设定值
- 这个值得仔细看下。会话选项
17. 新增preg_replace_callback_array()函数, 可以传多个匿名函数构成的数组进去. 比 preg_replace_callback()更简洁。
18.增加 random_bytes() 和 random_int() 方便取随机数
19. 可以使用 list() 函数来展开实现了 ArrayAccess 接口的对象
浅谈PHP7的新特性的更多相关文章
- 浅谈html5及其新特性
什么是 HTML5? HTML5 将成为 HTML.XHTML 以及 HTML DOM 的新标准. HTML 的上一个版本诞生于 1999 年.自从那以后,Web 世界已经经历了巨变. HTML5 仍 ...
- 浅谈HTML5的新特性
2014年10月29日,W3C宣布,经过接近8年的艰苦努力,HTML5标准规范终于制定完成. HTML5将会取代1999年制定的HTML 4.01.XHTML 1.0标准,使网络标准达到符合当代的网络 ...
- php7.0 和 php7.1新特性
PHP7.1 新特性 1.可为空(Nullable)类型 类型现在允许为空,当启用这个特性时,传入的参数或者函数返回的结果要么是给定的类型,要么是 null .可以通过在类型前面加上一个问号来使之成为 ...
- 浅谈测试rhel7新功能时的感受及遇到的问题【转载】
半夜起来看世界杯,没啥激情,但是又怕错误意大利和英格兰的比赛,就看了rhel7 相关新功能的介绍. rhel7的下载地址: https://access.redhat.com/site/downloa ...
- 《PHP7底层设计与源码实现》学习笔记1——PHP7的新特性和源码结构
<PHP7底层设计与源码实现>一书的作者陈雷亲自给我们授课,大佬现身!但也因此深感自己基础薄弱,遂买了此书.希望看完这本书后,能让我对PHP7底层的认识更上一层楼.好了,言归正传,本书共1 ...
- [转+自]关于PHP7的新特性(涉及取反和disabled_functions绕过)
PHP7和PHP5上的安全区别 preg_replace()不再支持/e修饰符 利用\e修饰符执行代码的后门大家也用了不少了,具体看官方的这段描述: 如果设置了这个被弃用的修饰符, preg_repl ...
- 浅谈PHP7新特性
1. 运算符(NULL 合并运算符) 把这个放在第一个说是因为我觉得它很有用.用法: $a = $_GET['a'] ?? 1; 它相当于: $a = isset($_GET['a']) ? $_GE ...
- PHP7.x新特性
1.太空船操作符太空船操作符用于比较两个表达式. 当$a小于. 等于或大于$b时它分别返回-1. 0或1. // Integers echo 1 <=> 1; // 0 echo 1 &l ...
- 【并行计算-CUDA开发】浅谈GPU并行计算新趋势
随着GPU的可编程性不断增强,GPU的应用能力已经远远超出了图形渲染任务,利用GPU完成通用计算的研究逐渐活跃起来,将GPU用于图形渲染以外领域的计算成为GPGPU(General Purpose c ...
随机推荐
- VMware bridge 桥接方式连接internet
经过反复测试,关于VMware内虚拟机(包括ubuntu linux和windows)连接internet 目前的结论是 使用bridge方式时,VMware相当于一个交换机(switch),虚拟机和 ...
- Python 异常处理
Python 异常处理 python提供了两个非常重要的功能来处理python程序在运行中出现的异常和错误.你可以使用该功能来调试python程序. 异常处理: 本站Python教程会具体介绍. 断言 ...
- 转: 【Java并发编程】之二十:并发新特性—Lock锁和条件变量(含代码)
简单使用Lock锁 Java5中引入了新的锁机制--Java.util.concurrent.locks中的显式的互斥锁:Lock接口,它提供了比synchronized更加广泛的锁定操作.Lock接 ...
- Java 循环和函数(方法)
1 for循环嵌套 简而言之,就是一个for循环语句里面,还有一个for循环语句. 外层循环,每循环一次,内层循环,循环一周. 示例 package java003; /** * 2017/9/1. ...
- 【Alpha】阶段 第七次 Scrum Meeting
每日任务 1.本次会议为第一次 Meeting会议: 2.本次会议在下午14:45,课间休息时间在禹州楼召开,召开本次会议为10分钟,根据大家的讨论分析得出的总结,讨论下接下来版本的改进计划: 一.今 ...
- 团队作业8——第二次项目冲刺(Beta阶段)5.22
1.当天站立式会议照片 会议内容: ①:检查总结上次任务完成情况 ②:安排本次任务的分工 ③:反思前三次自己的不足 ④:协商解决代码进度.成员投入时间等问题 2.每个人的工作 工作中遇到的困难: 代码 ...
- 201521123022 《Java程序设计》第三周学习总结
1.本周学习总结 2.书面作业 Q1.代码阅读 public class Test1 { private int i = 1;//这行不能修改 private static int j = 2; pu ...
- 201521123115《Java程序设计》第2周学习总结
1. 本章学习总结 Arrays和String的用法及其函数的一些运用,例如sort函数,输入多个数字,用Arrays.sort(数组名),对数组中的元素排序 2. 书面作业 **Q1.使用Eclip ...
- 201521123088 《Java程序设计》第1周学习总结
第1周学习总结 1.本周学习总结本周我们正式开始了对一门新的编程语言java的学习.Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承.指针等概念,因此J ...
- Python的变量参数