我以前用过的php的最高版本是php5.6。在换新工作之后,公司使用的是PHP7。据说PHP7的性能比之前提高很多。下面整理下php7的新特性。力求简单了解。不做深入研究。

1.变量类型声明

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的新特性的更多相关文章

  1. 浅谈html5及其新特性

    什么是 HTML5? HTML5 将成为 HTML.XHTML 以及 HTML DOM 的新标准. HTML 的上一个版本诞生于 1999 年.自从那以后,Web 世界已经经历了巨变. HTML5 仍 ...

  2. 浅谈HTML5的新特性

    2014年10月29日,W3C宣布,经过接近8年的艰苦努力,HTML5标准规范终于制定完成. HTML5将会取代1999年制定的HTML 4.01.XHTML 1.0标准,使网络标准达到符合当代的网络 ...

  3. php7.0 和 php7.1新特性

    PHP7.1 新特性 1.可为空(Nullable)类型 类型现在允许为空,当启用这个特性时,传入的参数或者函数返回的结果要么是给定的类型,要么是 null .可以通过在类型前面加上一个问号来使之成为 ...

  4. 浅谈测试rhel7新功能时的感受及遇到的问题【转载】

    半夜起来看世界杯,没啥激情,但是又怕错误意大利和英格兰的比赛,就看了rhel7 相关新功能的介绍. rhel7的下载地址: https://access.redhat.com/site/downloa ...

  5. 《PHP7底层设计与源码实现》学习笔记1——PHP7的新特性和源码结构

    <PHP7底层设计与源码实现>一书的作者陈雷亲自给我们授课,大佬现身!但也因此深感自己基础薄弱,遂买了此书.希望看完这本书后,能让我对PHP7底层的认识更上一层楼.好了,言归正传,本书共1 ...

  6. [转+自]关于PHP7的新特性(涉及取反和disabled_functions绕过)

    PHP7和PHP5上的安全区别 preg_replace()不再支持/e修饰符 利用\e修饰符执行代码的后门大家也用了不少了,具体看官方的这段描述: 如果设置了这个被弃用的修饰符, preg_repl ...

  7. 浅谈PHP7新特性

    1. 运算符(NULL 合并运算符) 把这个放在第一个说是因为我觉得它很有用.用法: $a = $_GET['a'] ?? 1; 它相当于: $a = isset($_GET['a']) ? $_GE ...

  8. PHP7.x新特性

    1.太空船操作符太空船操作符用于比较两个表达式. 当$a小于. 等于或大于$b时它分别返回-1. 0或1. // Integers echo 1 <=> 1; // 0 echo 1 &l ...

  9. 【并行计算-CUDA开发】浅谈GPU并行计算新趋势

    随着GPU的可编程性不断增强,GPU的应用能力已经远远超出了图形渲染任务,利用GPU完成通用计算的研究逐渐活跃起来,将GPU用于图形渲染以外领域的计算成为GPGPU(General Purpose c ...

随机推荐

  1. Java中的异常和处理详解

    简介 程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常.异常发生时,是任程序自生自灭,立刻退出终止,还是输出错误给用户?或者用C语言风格:用函数返回值作为执行状态?. ...

  2. NWERC2016-Problem A(Arranging Hat)

    Arranging Hat is a cushy job indeed; high impact work, absolute authority, and 364 days of holiday e ...

  3. 转:【Java并发编程】之八:多线程环境中安全使用集合API(含代码)

    转载请注明出处:http://blog.csdn.net/ns_code/article/details/17200509     在集合API中,最初设计的Vector和Hashtable是多线程安 ...

  4. 转:深入Java集合学习系列:HashMap的实现原理

    1. HashMap概述: HashMap是基于哈希表的Map接口的非同步实现(Hashtable跟HashMap很像,唯一的区别是Hashtalbe中的方法是线程安全的,也就是同步的).此实现提供所 ...

  5. 软工+C(2017第1期) 题目设计、点评和评分

    // 下一篇:分数和checklist 如何设计题目 教学中的一个问题是老师出题太简单了,题目设计一开始上来就不紧凑,我认为一个好的课程应该上来就给你紧凑感,而不是先上来"轻松2-3周&qu ...

  6. 201521123011 《java程序设计》 第7周学习总结

    1. 本周学习总结 参考资料: XMind 2. 书面作业 1.ArrayList代码分析 1.1 解释ArrayList的contains源代码 1.2 解释E remove(int index)源 ...

  7. 201521123056 《Java程序设计》第1周学习总结

    1. 本周学习总结 java语言结构简单,但功能齐全,同时能够在不同系统平台上编译,但编译的前提是系统要有安装JVM(即java虚拟机),JVM是java实现跨平台的最核心部分.本周还学习了JDK.J ...

  8. SparkStreming之updateStateByKey

    正文 上一篇简单的写了一个socketTextStream的demo,这个问题就是每一次不能将之前和之后的数据进行合并统一.接下来我们通过demo进行把着这个问题解决. val conf = new ...

  9. org.springframework.core.NestedIOException: ASM ClassReader failed to parse class file - probably du

    如果出现类似下面的错误,原因就是JDK版本太高了,我换成1.7就没事了 Caused by: org.springframework.core.NestedIOException: ASM Class ...

  10. HTML超文本

    1.HTML链接 2.HTML表格 3.HTML图像 4.HTML列表 5.HTML块 6.HTML布局 7.HTML表单 1.HTML链接 (1)给文字及图片添加超链接 < html> ...