• 技术文章 >后端开发 >PHP问题

    php5.2和5.3有什么区别

    VV2021-09-28 16:39:11原创184

    php5.2和5.3的区别有:1、php5.3弃用了Register Globals、Magic Quotes等功能;2、新增了魔术方法__invoke()、__callStatic();3、支持用const定义常量。

    本文操作环境:windows10系统、php 5.2&&php 5.3、thinkpad t480电脑。

    很多小伙伴可能不太了解php 5.2和php 5.3之间有什么区别。下面我们就来具体介绍下这两个版本之间有什么区别,具体的区别在哪里,一起来看下吧。

    我们先来看下php 5.2这个版本。

    php5.2(2006-2011)

    JSON的支持
           增加了json_encode(),json_decode()等函数

    接着我们来看下php 5.3这个版本。

    php5.3(2009-2012)

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

    1.弃用的功能

    以下几个功能被弃用,若在配置文件中启用,则 PHP 会在运行时发出警告。

    Register Globals
    Magic Quotes
    Safe Mode

    2.匿名函数

    f u n c = f u n c t i o n ( func=function(func=function(arg){
    echo $arg;
    }
    $func(‘hello’);

    3.新增了魔术方法 __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() 则会在调用一个不存在的静态方法时被调用。

    4.命名空间,但不完善,只支持类

    5.后期静态绑定

    6.Heredoc 和 Nowdoc

    对 Heredoc 以及 Nowdoc 进行了一些改进,它们都用于在 PHP 代码中嵌入大段字符串。

    7.用 const 定义常量

    PHP5.3 起同时支持在全局命名空间和类中使用 const 定义常量。

    旧式风格:
    define("XOOO", "Value");
    新式风格:
    
    const XXOO = "Value";
    const 形式仅适用于常量,不适用于运行时才能求值的表达式:
    // 正确
    const XXOO = 1234;
    // 错误
    const XXOO = 2 * 617;
    (在5.6版后可以了)

    8.三元运算符简写形式

    旧式风格:

    echo $a ? $a : “No Value”;

    可简写成:

    echo $a ?: “No Value”;

    即如果省略三元运算符的第二个部分,会默认用第一个部分代替。

    9.Phar

    Phar即PHP Archive, 起初只是Pear中的一个库而已,后来在PHP5.3被重新编写成C扩展并内置到 PHP 中。

    Phar用来将多个 .php 脚本打包(也可以打包其他文件)成一个 .phar 的压缩文件(通常是ZIP格式)。

    目的在于模仿 Java 的 .jar, 不对,目的是为了让发布PHP应用程序更加方便。同时还提供了数字签名验证等功能。

    .phar 文件可以像 .php 文件一样,被PHP引擎解释执行,同时你还可以写出这样的代码来包含(require) .phar 中的代码:

    require(“xxoo.phar”);
    require(“phar://xxoo.phar/xo/ox.php”);

    推荐学习:php培训

    以上就是php5.2和5.3有什么区别的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:php 5.2 php 5.3 区别
    上一篇:php怎么删除session_id 下一篇:php中system()不返回输出怎么办
    线上培训班

    相关文章推荐

    • PHP中switch和ifelse有什么区别?哪个用起来更快?• react和vuejs有什么区别• vuejs1.0与2.0的区别是什么• php sizeof与count的区别是什么

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网