php5.0
使用了Zend 2 引擎。
增加完善的面向对象模型
增加了新关键字,包括this,try,catch,public,private,protected等
改变strrpos() 和 strripos()使用整个字符串作为 needle。
改变array_merge() 只接受数组
改变非法使用字符串偏移量会导致 E_ERROR 而不是 E_WARNING
改变get_class(),get_parent_class()和get_class_methods() 返回的类/方法名和定义时的名字一致(区分大小写)
改变ip2long() 在传递入一个非法 IP 作为参数时返回 FALSE,不再是 -1。
改变函数定义在包含文件中,则这些函数可以在主文件中使用而与是否在 return 指令之前还是之后无关
改变include_once 和 require_once 在 Windows 下路径规格化,因此包含 A.php 和 a.php 只会把文件包含一次。
php 5.1
重写了数据处理部分的代码
PDO扩展默认启动
性能优化
超过30个新函数
超过400个bug修复
php5.2
CLI SAPI不再从php.ini和php-cli.ini中获取当前目录信息。这是从安全角度考虑的。
增加json支持
对0取模的时候会提示Warning信息。
对象可以通过__toString()函数被当做字符串调用。
禁止设置抽象类的静态方法
增加RFC(data:stream)的支持。
php5.3
不再支持ISAPI
增加了命名空间的支持.
增加了延迟静态绑定支持.
增加了闭包及匿名函数支持。
增加了循环引用的垃圾回收器并且默认是开启的.
增加允许动态访问静态方法。
增加了 Nowdoc 语法支持, 类似于 Heredoc 语法, 但是包含单引号.就是
增加了两个魔术方法, __callStatic 和 __invoke.
增加魔法常量 __DIR__ 来解决路径问题
改变__toString 魔术方法不再接受参数
改变魔术方法 get, set, isset, unset, and __call 应该总是公共的(public)且不能是静态的(static). 方法签名是必须的.
改变__call 魔术方法在访问私有的(private)和被保护的(protected)方法时被调用.
改变realpath() 现在是完全与平台无关的. 结果是非法的相对路径比如 FILE . "/../x" 将不会工作.
call_user_func() 系列函数即使被调用者是一个父类也使用 $this.
改变数组函数 natsort(), natcasesort(), usort(), uasort(), uksort(), array_flip(), 和 array_unique() 将不再接受对象作为参数
改变include(require)_once 解决重复打开的问题,整体性能提高了 5%-15%
改变md5() 大概提高了 10%-15% 的性能,更好的内存处理机制,提高软件性能的访问。
改变函数内 include 或者 require 一个文件时,文件内 将不能使用 func_get_arg(), func_get_args() 和 func_num_args() 函数
改变HTTP 流包裹器将从 200 到 399 全部的状态码都视为成功
改变异常可以被内嵌
改变三元操作符简写echo $a ? $a : "No Value"==$a ?: "No Value";
改变使用双引号声明 Heredoc, 补充了 Nowdoc 语法.
改变可在类外部使用 const 关键词声明 常量.
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
增加内置用于开发的 CLI 模式的 web server 。
增加SESSION 扩展现在能追踪文件的 上传进度
改变移除魔术引号 。为避免出现安全问题,依赖此特性的应用可能需要升级。
改变get_magic_quotes_gpc() 和 get_magic_quotes_runtime() 现在总是返回 FALSE 。
改变php.ini 指令register_globals 和 register_long_arrays 被移除。
改变调用时的引用传递 被移除。就是不能有f(&$a)这样的形式
改变break 和 continue 语句不再接受可变参数
改变在日期与时间扩展 中,不再支持时区使用 TZ(TimeZone)环境变量设置,必须使用 date.timezone php.ini 配置选项或 date_default_timezone_set()
改变数组转换成字符串将产生一条 E_NOTICE 级别的错误
改变NULL 、FALSE 、或 一个空字符串被添加成一个对象的属性时将发出一条 E_WARNING 级别的错误
改变参数名使用全局变量将会导致一个致命错误
改变Salsa10 和 Salsa20 哈希算法 被移除
改变当使用两个空数组作为参数时,array_combine() 现在返回 array() 而不是 FALSE
改变htmlentities() 将像 htmlspecialchars() 一样处理亚洲字符集
改变不要再使用 eregi() ,此特性在最新版本中被移除
改变非数字的字符串偏移量,比如 a[′foo′]此处a 是一个字符串,现在使用 isset() 时返回 false,使用 empty() 时返回 true,
改变解析错误信息和不兼容参数的警告
php5.5
已放弃对 Windows XP 和 2003 的支持。需要 Windows Vista 或更新的系统。
增加 Generators,包括yield关键字
增加 finally 关键字
增加了代码的opcache缓存
改变pack() 和 unpack()函数
改变移除 PHP logo GUIDs
改变foreach 现在支持 list()
改变empty() 支持传入一个任意表达式,而不仅是一个变量
改变非变量array和string也能支持下标获取了
改变类名通过::class可以获取
php5.6
增加可变参数函数的支持,不再依赖func_get_args()函数,现在可以通过新增的操作符(...)可以把数组或者可遍历对象解包到参数列表
增加一个交互式调试器phpdbg
改变const 允许使用包含数字、字符串字面值和常量的标量表达式
改变GMP 对象支持操作符重载和转换为标量
改变采用CryptoPro S-box tables实现了 gost-crypto 哈希算法
改变OpenSSL扩展新增证书指纹的提取和验证功能,
改变use 操作符开始支持函数和常量的导入 use function 和 use const
改变php://input 开始支持多次打开和读取,这给处理POST数据的模块的内存占用带来了极大的改善。