浅谈PHP7的新特性

我以前用过的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 接口的对象

上一篇:浅谈HTML5单页面架构(二)——backbone + requirejs + zepto + underscore


下一篇:浅谈测试rhel7新功能时的感受及遇到的问题【转载】