浅谈PHP7的新特性

Posted 犀利瓜

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浅谈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 接口的对象

以上是关于浅谈PHP7的新特性的主要内容,如果未能解决你的问题,请参考以下文章

PHP7的新特性

[PHP7.0-PHP7.2]的新特性和新变更

浅谈Java 8的新特性和使用场景

php7的新特性

PHP7中我们应该学习会用的新特性

php7的新特性