zoukankan      html  css  js  c++  java
  • 浅谈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 modelA,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 接口的对象

  • 相关阅读:
    jquery ajax 上传文件
    动态sql语句,非存储过程,如何判断某条数据是否存在,如果不存在就添加一条
    VS2017中的nuget还原失败或超时的解决方案
    查找datatable 中的重复记录(只查询一个字段)
    SQL Server 删除重复记录,只保留一条记录
    图床_typora设置.md
    各种源更改.md
    linux手机投屏.md
    firefox设置.md
    Manjaro初次.md
  • 原文地址:https://www.cnblogs.com/gelu/p/7f47c37263fbdc8c49ce4e3ce15045c4.html
Copyright © 2011-2022 走看看