美文网首页工作生活
PHP7新增特性和改变

PHP7新增特性和改变

作者: 机智的老刘明同志 | 来源:发表于2019-07-04 18:06 被阅读0次

新增特性和改变:   

    1.declare(strict_type=1);   

        如果不开启strict_type,PHP将会尝试帮你转换成要求的类型,而开启之后,会改变PHP就不再做类型转换,类型不匹配就会抛出错误

    2. 更多的Error变为可捕获的Exception

        比如调用一个不存在的函数

    3.加入了AST(抽象语法树)

        ①什么是AST?

        例如:result = 6 + 7 * 3 用抽象语法树表示

        ②什么是opcodes? 

        Opcode是一种PHP脚本编译后的中间语言,就像Java的ByteCode,或者.NET的MSL

=

        ③从 php 脚本到 opcodes 的执行的过程 

        PHP5:

            Lexing:词法扫描分析,将源文件转换成 token 流;

            Parsing:语法分析,在此阶段生成 op arrays。

        PHP7:

            Lexing:词法扫描分析,将源文件转换成 token 流;

            Parsing:语法分析,从 token 流生成抽象语法树;

            Compilation:从抽象语法树生成 op arrays。

        ④为什么要用AST?

        从以上的步骤来看,这比之前的过程还多了一步,所以按常理来说这反而会增加程序的执行时间和内存的使用。但事实上内存的使用确实增加了,但是执行时间上却有所降低。

        如果仅仅是时间上的优化,似乎也不是使用 AST 的充足理由。其实实现 AST 并不是基于时间优化上的考虑,而是为了解决语法上的问题。

        yield 不需要括号

        括号不影响行为

        list() 的变化

        引用赋值的顺序

        __clone 方法可以直接调用

    4.新增操作符号 ??  <=>

        $c = $a <=> $b

        如果$a > $b, $c 的值为1

        如果$a == $b, $c 的值为0

        如果$a < $b, $c 的值为-1

        ??

        $username = isset($_GET['user]) ? $_GET['user] : 'nobody';

        $username = $_GET['user'] ?? 'nobody';

    5.define() 定义常量数组 

        define('ARR',['a','b']);

        echo ARR[1];// a

    6.匿名函数

        $anonymous_func = function(){return 'function';};

        echo $anonymous_func(); // 输出function

    7.Unicode字符格式支持(echo “\u{9999}”)

    8.命名空间引用优化

        // PHP7以前语法的写法

        use FooLibrary\Bar\Baz\ClassA;

        use FooLibrary\Bar\Baz\ClassB;

        // PHP7新语法写法

        use FooLibrary\Bar\Baz\{ ClassA, ClassB};

    9.Unserialize 提供过滤特性



相关文章

  • PHP7新增特性和改变

    新增特性和改变: 1.declare(strict_type=1); 如果不开启strict_type,PHP...

  • PHP7新特性

    PHP7新增特性 新增操作符1.“太空船”操作符“<=>” 2.操作符“??”如果变量存在且值不为NULL, 它就...

  • PHP7语言新增特性整理笔记

    第一,PHP7有加入几十个功能,主要是以下内容 1,改进的性能 江湖传说(当然是鸟哥证实过的例子)PHP7比 PH...

  • php7,go,python,java之「函数」

    介绍4种语音的函数定义和特殊的注意事项。横向对比,便于理解。 php7的函数定义 php7新增了更加严格的函数声明...

  • Android O(8.0) Notification解决方案

    1、Android O(8.0)通知的改变 NotificationChannel是android8.0新增的特性...

  • 高性能PHP7【笔记】

    一、搭建环境 二、PHP7新特性 A.OOP特性 1.类型声明 PHP7支持的形参类型声明的类型有整型、浮点型、字...

  • PHP 7 新特征

    最好的语言发布了新的版本,一个划时代的大版本:PHP7。 PHP7修复了大量BUG,新增了功能和语法糖。这些改动涉...

  • PHP7 新特性你知道多少?

    PHP7 新特性你知道多少? 2015.12.3发生了两件大事,PHP7问世了,Swift开源了。 最好的语言发布...

  • html新增标签和特性

    HTML5是下一代的HTML,将成为HTML、XHTML以及HTML DOM的新标准。这是我学习了HTML5后,对...

  • 你真的了解现在的PHP吗?(1)

    前段时间,公司的项目从PHP5.3升级到PHP7,现在项目里开始使用PHP7的一些新语法和特性。反观PHP的5.4...

网友评论

    本文标题:PHP7新增特性和改变

    本文链接:https://www.haomeiwen.com/subject/onzlhctx.html