PHP版本介绍
- php最初是为了快速构建一个web页面
- 它的好处是在代码中能内嵌html的代码,从而让程序员能在一个页面中同时写html代码和php代码就能生成一个web页面。
混编例子(现在不推荐这样写了):
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Language" content="zh-CN" />
<title>Hello World</title>
<style>
body{font-size:15px;color:#000;font-family:Arial,Helvetica,sans-serif;}
</style>
</head>
<body>
<?php
echo "Hello world!这是php混编html";
?>
</body>
</html>
<?php
if(!$_POST)
{
echo '<form action="" method="post">
服务器地址:<input type="text" name="host" value="localhost" /><br />
数据库账号:<input type="text" name="user" value="" /><br />
数据库密码:<input type="password" name="pwd" value="" /><br />
指定数据库:<input type="text" name="db" value="test" /><br />
<input type="submit" value="确定"/>
</form><hr/>说明:<b>……<br /></b>
';
}
?>
PHP4主要变更
- 以Zend引擎作为解析器
- 加入超全局变量功能,包括GET,_POST,$_SESSION等
- 从网络接收的数据将不会设置成全局变量,增加程序的安全性。
- 加入命令档,成为CLI
- 加入phpize和php-config的man页面
PHP5主要变更
-
PHP5.0 : 使用了Zend 2 引擎,增加了新关键字,包括this,try,catch,public,private,protected等
-
PHP5.1:PDO扩展默认启动、性能优化、修复了超过400个bug
-
PHP5.2:新增Zip、Filter 、JSON 扩展
-
PHP5.3:弃用的功能,匿名函数(又叫闭包函数,1,2),新增魔术方法,命名空间,后期静态绑定,Heredoc 和 Nowdoc, const, 三元运算符,Phar
-
PHP5.4:闭包 支持 $this,Short Open Tag, 数组简写形式,Traits, 内置用于开发的 CLI 模式的 web server ,SESSION 扩展能追踪文件的上传进度
-
PHP5.5:yield(生成器用法、协程),list() 用于 foreach,finally关键字,opcache扩展
-
PHP5.6:支持大于 2GB 的文件上传,常量增强,可变函数参数,命名空间增强,pgsql 扩展现在支持 异步方式连接数据库及执行查询
更多参考资料
PHP5各个版本的新功能和新特性总结
附录:4.x->5.6
PHP6
早在2005年的时候,PHP社区发起了PHP6的项目,这个项目旨在为 PHP提供完全内置的unicode的支持。但由于种种困难,该项目最终于2010年取消。虽然PHP6这个项目取消了,但大量的功能已经在PHP5.x 版本中得以实现。这里面最重要的就是OOP方面的提升。这也帮助PHP实现了从面向过程到面向对象编程的跨越。
为什么不延续PHP6的序列?关于这个问题,PHP官方解释,PHP6版本事实上已经存在了,虽然无法发布GA版本,但已经众所周知。版本跳跃在开源和商业软件里面也常见。。。
PHP7主要变更
-
PHP7.0 使用了Zend Engine 3.0性能升级,匿名类,标量类型声明,返回值类型声明,太空船操作符,
单个 use 语句 一次性可以导入多个类、函数和常量
生成器可以返回表达式
JSON 扩展已经被 JSOND 取代
listen 端口现在同时监听 IPv4 和 IPv6 地址
更多参考资料
PHP7新特性总结
从 PHP 5.6.x 移植到 PHP 7.0.x -
PHP7.1 可为空(Nullable)类型 、新增 void 类型、类常量可见性、iterable 伪类
多异常捕获处理
list支持键名
字符串支持负向
curl支持推送http2
更多参考资料从 PHP 7.0.x 移植到 PHP 7.1.x -
PHP7.2 新的对象类型object 、允许重写抽象方法(Abstract method)、允许分组命名空间的尾部逗号
更多参考资料从 PHP 7.1.x 移植到 PHP 7.2.x -
PHP7.3 更灵活的Heredoc和Nowdoc、 数组析构支持引用赋值
list结构支持引用解析。
instanceof 运算符支持字面量语法
LDAP 全支持
性能提升
废弃大小写不敏感的常量
更多参考资料从 PHP 7.2.x 移植到 PHP 7.3.x -
PHP7.4 预加载 、FFI、类属性的类型支持
更多参考资料 从 PHP 7.3.x 移植到 PHP 7.4.x
PHP8主要变更
- PHP8.0
JIT
注解的功能
构造器属性提升功能(在构造函数中声明类的属性)
联合类型
Match 表达式
Nullsafe 运算符(?->)
更多参考资料
从 PHP 7.4.x 移植到 PHP 8.0.x
PHP8正式版发布,带来了注解和JIT
附php源码
https://www.php.net/downloads.php
https://github.com/php/php-src