zoukankan      html  css  js  c++  java
  • php各个版本的区别

    一. PHP 5.2、5.3、5.4、5.5、5.6 版本区别对比以及新功能详解

    PHP5.2 以前:autoload, PDO 和 MySQLi, 类型约束
    PHP5.2:JSON 支持
    PHP5.3:弃用的功能,匿名函数,新增魔术方法,命名空间,后期静态绑定,Heredoc 和 Nowdoc, const, 三元运算符,Phar
    PHP5.4:Short Open Tag, 数组简写形式,Traits, 内置 Web 服务器,细节修改
    PHP5.5:yield, list() 用于 foreach, 细节修改
    PHP5.6: 常量增强,可变函数参数,命名空间增强

    1.php5.2以前

    1.1 autoload的使用;当在代码中使用一个未定义的类的时候,该函数就会被调用

    现在已经不再使用了,因为一个项目中只能有一个__autoload();现在使用spl_autoload_register();

    1.2 PDO和MiSQLi的使用

    1.3 类型约束。

          通过类型约束可以限制参数的类型,不过这个机制不完善。

    2. php5.2 

    (2006-2011)

    2.1 JSON的支持

      增加了json_encode(),json_decode()等函数

    3.php5.3

    (2009-2012)

    PHP5.3 算是一个非常大的更新,新增了大量新特征,同时也做了一些不向下兼容的修改

    3.1 弃用的功能

    3.2 匿名函数

    $func=function($arg){
       echo $arg;
    }
    
    $func('hello');

    3.2 新增了魔术方法 __invoke(),__callStatic();

    随着匿名函数的加入,PHP 引入了一个新的魔术方法 __invoke().
    该魔术方法会在将一个对象作为函数调用时被调用:
    
    class A
    {
        public function __invoke($str)
        {
            print "A::__invoke(): {$str}";
        }
    }
    
    $a = new A;
    $a("Hello World");
    输出毫无疑问是:  A::__invoke(): Hello World
    __callStatic() 则会在调用一个不存在的静态方法时被调用。

    3.3 命名空间

    <?php
    // 命名空间的分隔符是反斜杠,该声明语句必须在文件第一行。
    // 命名空间中可以包含任意代码,但只有 **类, 函数, 常量** 受命名空间影响。
    namespace XXOOTest;
    
    // 该类的完整限定名是 XXOOTestA , 其中第一个反斜杠表示全局命名空间。
    class A{}
    
    // 你还可以在已经文件中定义第二个命名空间,接下来的代码将都位于 OtherTest2 .
    namespace OtherTest2;
    
    // 实例化来自其他命名空间的对象:
    $a = new XXOOTestA;
    class B{}
    
    // 你还可以用花括号定义第三个命名空间
    namespace Other {
        // 实例化来自子命名空间的对象:
        $b = new Test2B;
    
        // 导入来自其他命名空间的名称,并重命名,
        // 注意只能导入类,不能用于函数和常量。
        use XXOOTestA as ClassA
    }

    3.4 后期静态绑定

    #self 的语义本来就是“当前类”
    class
    A { static public function callFuncXXOO() { print static::funcXXOO(); } // ... }

    二.php7的新特性

    ./bin/php -v  #查看PHP版本
    ./bin/php -m #查看安装的模块

    1.变量类型

    function test(int $a,string $b,array $c):int{
    
    
    }

    2.错误异常

    try/catch

    3.zval使用栈内存

    节约了内存分配
    php5
    zval*val;make_std_zval(val);

    php7 zval val;
  • 相关阅读:
    C#入门(3)
    C#入门(2)
    C#入门(1)
    JNI工程搭建及编译
    Java-NestedClass(Interface).
    ConCurrent in Practice小记 (4)
    Java Annotation 注解
    Android使用ViewPager做轮播
    ConCurrent in Practice小记 (3)
    ConCurrent in Practice小记 (2)
  • 原文地址:https://www.cnblogs.com/myvic/p/7707437.html
Copyright © 2011-2022 走看看