PHP5历史以及各个版本的新功能和新特性收集总结

PHP的版本历史

1995年初

PHP1.0诞生

Rasmus Lerdof发明了PHP,这是简单的一套Perl脚本,用来跟踪访问者的信息。这个时候的PHP只是一个小工具而已,它的名字叫做“Personal Home Page Tool”(个人主页小工具)。

1995年6月

PHP2.0诞生

Rasmus Lerdof用C语言来重新开发这个工具,取代了最初的Perl程序。这个新的用C写的工具最大的特色就是可以访问数据库,可以让用户简单地开发动态Web程序了。这个用C写的工具又称为PHP/FI。它已经有了今天php的一些基本功能了。

自Rasmus在1995年6月将PHP/FI发布源码之后,到1997年,全世界大约有几千个用户(估计)和大约50000个域名安装。

1998年6月

PHP3.0诞生

虽然说98年6月才正式发布php3.0,但是在正式发布之前,已经经过了9个月的公开测试了。

Andi Gutmans和Zeev Suraski加入了PHP开发项目组。这是两个以色列工程师,他们在使用PHP/FI的时候发现了PHP的一些缺点,然后决定重写PHP的解析器。注 意,在这个时候,PHP就不再称为Personal Home Page了。而改称为PHP:Hypertext Preprocessor(超文本预处理器 )。

PHP3是最像现在使用的php的第一个版本,这个重写的解释器也是后来Zend的雏形。PHP3.0的最强大的功能就是它的可扩展性。它提供给第三方开发者数据库,协议,和API的基础结构之外,还吸引了大量的开发人员加入并提交新的模块。

2000年5月

PHP4.0发布

Andi Gutmans和Zeev Suranski在4.0做的最大的动作就是重写了PHP的代码,发明了Zend引擎来增强程序运行时的性能和PHP的模块性。这个Zend实际上就是Andi和Zeev名字缩写的合称。

使用了Zend引擎,PHP获得了更高的性能之外,也有其他一些关键的功能,包括支持更多的web服务器;HTTP,Session的支持,输出缓冲等。

2004年7月

PHP5.0发布

PHP5.0的核心是Zend引擎2代。它引入了新的对象模型和大量的新功能。比如引入了PDO(PHP Data Object)

新特性

PHP5.3

新功能:

  • 添加了命名空间的支持.
  • 添加了静态晚绑定支持.
  • 增加了goto支持。
  • 增加了闭包支持。
  • 新增了两个魔术方法, callStatic 和 invoke.
  • 添加了 Nowdoc 语法支持, 类似于 Heredoc 语法, 但是包含单引号.就是<<'EOF'这样的语法。
  • 可使用双引号声明 Heredoc, 补充了 Nowdoc 语法.
  • 可在类外部使用 const 关键词声明 常量.
  • 三元运算操作符有了简写形式:表达式 ? true :false 。
  • HTTP 流包裹器将从 200 到 399 全部的状态码都视为成功。
  • 允许动态访问静态方法。
  • 异常可以被内嵌
  • 新增了循环引用的垃圾回收器并且默认是开启的.
  • mail() 现在支持邮件发送日志. (注意: 仅支持通过该函数发送的邮件.)

PHP5.4

新特性:

  • 新增支持 traits 。
  • 新增短数组语法,比如
    a=[1,2,3,4];
    a = ['one' => 1, 'two' => 2, 'three' => 3, 'four' => 4]; 。
  • 新增支持对函数返回数组的成员访问解析,例如 foo()[0] 。
  • 现在 闭包 支持 $this 。
  • 现在不管是否设置 short_open_tag php.ini 选项,<?= 将总是可用。
  • 新增在实例化时访问类成员,例如: (new Foo)->bar() 。
  • 现在支持 Class::{expr}() 语法。
  • 新增二进制直接量,例如:0b001001101
  • 改进解析错误信息和不兼容参数的警告。
  • SESSION 扩展现在能追踪文件的 上传进度 。
  • 内置用于开发的 CLI 模式的 web server 。

PHP5.5

新特性:

  • 新增 Generators,包括yield关键字
  • 新增 finally 关键字
  • foreach 现在支持 list()
  • empty() 现在支持传入一个任意表达式,而不仅是一个变量。
  • 非变量array和string也能支持下标获取了
  • 类名通过::class可以获取
  • 增加了opcache扩展
  • 新增password_hash等密码函数

PHP5.6

  • 可以使用表达式定义常量 eg: const TWO = ONE * 2可以通过 const 关键字来定义类型为 array 的常量
  • 使用 ... 运算符定义变长参数函数

  • <?php
    function test(...$args)
    {
        print_r($args);
    }
    
    test(1,2,3);
    //输出
    Array
    (
        [0] => 1
        [1] => 2
        [2] => 3
    )
    ?>
  • 使用 ** 进行幂运算

  • use 运算符可以在类中导入外部的函数和常量了。 对应的结构为 use function 和 use const。

    加入 hash_equals() 函数,以恒定的时间消耗来进行字符串比较,以避免时序攻击

    加入 __debugInfo();可以用来控制要输出的属性和值。返回值必须是个数组。

    public function __debugInfo() {      
          
          
    return array();
    }




  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值