欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  php教程

Php版本不同版本比较

程序员文章站 2024-02-02 16:52:42
...

PHP5.5.X 不向后兼容变更: 1.已放弃对 Windows XP 和 2003 的支持。构建 Windows 版本的 PHP 需要 Windows Vista 或更新的系统。 2.为使 pack() 和 unpack() 更兼容 Perl 做了一些变更,在使用这两个函数时,为保持较好的兼容性,可使用 version_compare 函

PHP5.5.X

不向后兼容变更:

1.已放弃对 Windows XP 和 2003 的支持。构建 Windows 版本的 PHP 需要 Windows Vista 或更新的系统。

2.为使 pack()unpack() 更兼容 Perl 做了一些变更,在使用这两个函数时,为保持较好的兼容性,可使用version_compare函数对php版本进行比较。

3.移除php logo guids(包括php_logo_guid()php_egg_logo_guid()php_real_logo_guid()zend_logo_guid()函数)。

新增功能:

1.新增generators,generators提供了一种更容易的方法来实现简单的对象迭代,但没有实现一个具有Iterator 接口的类所带来的性能开销和复杂性。

2.新增finally关键字

3.foreach支持list(),foreach 控制结构现在支持通过list() 构造将嵌套数组分离到单独的变量.

4.empty()支持任意表达式,而不仅仅是变量。

5.数组和字符串现在可以直接取消引用来访问各个元素和字符(例如:echo [1, 2, 3][0];echo 'PHP'[0];)。

6.新的密码哈希 API。

7.改进GD(翻转支持使用新的 imageflip() 函数,高级裁剪支持使用imagecrop() &imagecropauto() 函数,WebP 的读写分别支持使用imagecreatefromwebp() &imagewebp())。


PHP5.4.X

不向后兼容变更:

1.不再支持 安全模式 。

2.移除 魔术引号 get_magic_quotes_gpc()get_magic_quotes_runtime() 现在总是返回FALSE 。 调用 set_magic_quotes_runtime() 将产生一个E_CORE_ERROR 级别的错误

3.register_globals 和register_long_arrays php.ini 指令被移除。

4.调用时的引用传递 被移除。

5.break 和continue 语句不再接受可变参数( 比如: break 1 + foo() * $bar; )。像类似 break 2; 这样的固定参数仍可使用。受此变化影响,不再允许出现break 0;continue 0;

6.在 日期与时间扩展 中,不再支持时区使用 TZ(TimeZone)环境变量设置。必须使用 date.timezone php.ini 配置选项或 date_default_timezone_set() 函数来指定时区。PHP 将不再尝试猜测时区,而是回退到“UTC”并发出一条E_WARNING 错误。

7.非数字的字符串偏移量,比如 $a['foo'] 此处 $a 是一个字符串,现在使用isset() 时返回 false,使用empty() 时返回 true,并产生一条E_WARNING 错误。

8.数组转换成字符串将产生一条 E_NOTICE 级别的错误,但返回的结果仍是字符串"Array"

9.NULLFALSE 、或 一个空字符串被添加成一个对象的属性时将发出一条E_WARNING 级别的错误,而不是 E_STRICT

10.现在参数名使用全局变量将会导致一个致命错误。禁止类似function foo($_GET, $_POST) {} 这样的代码。

11.Salsa10 和 Salsa20 哈希算法 被移除

12.当使用两个空数组作为参数时, array_combine() 现在返回array() 而不是 FALSE

13.htmlentities() 将像htmlspecialchars() 一样处理亚洲字符集,这是以前 PHP 版本的处理情况,但现在将会发出一条E_STRICT 错误。

14.强烈建议不要再使用 eregi() ,此特性在最新版本中被移除。

15.下列关键字现在被 保留 ,且不能用于函数名或类名(traitcallableinsteadof)。

16.下列函数已从 PHP 中移除(define_syslog_variables()import_request_variables()session_is_registered()session_register()session_unregister()mysqli_bind_param()mysqli_bind_result()mysqli_client_encoding()mysqli_fetch()mysqli_param_count()mysqli_get_metadata()mysqli_send_long_data() 、 mysqli::client_encoding() , mysqli_stmt::stmt())。

新增功能:

1.新增支持 traits 。

2.新增短数组语法,比如$a = [1, 2, 3, 4];$a = ['one' => 1, 'two' => 2, 'three' => 3, 'four' => 4];

3.新增支持对函数返回数组的成员访问解析,例如foo()[0]

4.现在闭包 支持 $this

5.现在不管是否设置short_open_tag php.ini 选项,= 将总是可用。

6.新增在实例化时访问类成员,例如:(new Foo)->bar()

7.现在支持Class::{expr}() 语法。

8.新增二进制直接量,例如:0b001001101

9.改进解析错误信息和不兼容参数的警告。

10.SESSION 扩展现在能追踪文件的 上传进度 。

11.内置用于开发的CLI 模式的 web server 。


PHP5.3.X

不向后兼容变更:

1.在 PHP 5.3.x 的所有绑定扩展中应用了新的内部参数解析API, 当给函数传递了不兼容的参数时将返回 NULL. 但有一些例外,比如函数 get_class() 在出现错误时将会返回 FALSE.

2.clearstatcache() 默认不再清除缓存的 realpath.

3.realpath() 现在是完全与平台无关的. 结果是非法的相对路径比如 __FILE__ . "/../x" 将不会工作.

4.call_user_func() 系列函数即使被调用者是一个父类也使用 $this.

5.数组函数 natsort(), natcasesort(), usort(), uasort(), uksort(), array_flip(), 和 array_unique() 将不再接受对象作为参数. 在将这些函数应用于对象时, 请首先将对象转换为数组.

6.按引用传递参数的函数在被按值传递调用时行为发生改变. 此前函数将接受按值传递的参数, 现在将抛出致命错误. 之前任何期待传递引用但是在调用时传递了常量或者字面值 的函数, 需要在调用前改为将该值赋给一个变量。

7.新的 mysqlnd 库需要使用 MySQL 4.1 新的 41 字节密码格式。继续使用旧的 16 字节密码将导致 mysql_connect() 和其它类似函数 抛出 "mysqlnd cannot connect to MySQL 4.1+ using old authentication." 错误.

8.新的 mysqlnd 库将不再读取 MySQL 配置文件(my.cnf/my.ini), 这与旧版本的 libmysql 库不同. 如果你的代码依赖于这些配置 文件, 你可以使用 mysqli_options() 显式地加载它. 注意, 这意味着如果 PDO 中的 MySQL 支持使用了 mysqlnd 进行编译,PDO 特有常量 PDO::MYSQL_ATTR_READ_DEFAULT_FILEPDO::MYSQL_ATTR_READ_DEFAULT_GROUP 将是未定义的.

9.SplFileInfo 及其相关目录类会移除末尾的 /.

10.__toString 魔术方法不再接受参数.

11.魔术方法 __get, __set, __isset, __unset, and __call 应该总是公共的(public)且不能是静态的(static). 方法签名是必须的.

12.现在 __call 魔术方法在访问私有的(private)和被保护的(protected)方法时被调用.

13.函数内 include 或者 require 一个文件时,文件内 将不能使用 func_get_arg(), func_get_args()func_num_args() 函数。

14.新增了一个包裹在 MHASH 扩展外面的仿真层。但是并非所有的算法都涉及到了,值得注意的是 s2k 哈希算法。这意味着 s2k 哈希算法在 PHP 5.3.0 中不再可用。

新增功能:

1.添加了命名空间的支持.

2.添加了静态晚绑定支持.

3.添加了支持.

4.添加了原生的闭包(Lambda/匿名函数)支持.

5.新增了两个魔术方法, __callStatic 和 __invoke.

6.添加了 Nowdoc 语法支持, 类似于 Heredoc 语法, 但是包含单引号.

7.可使用双引号声明 Heredoc, 补充了 Nowdoc 语法.

8.可在类外部使用 const 关键词声明 常量.

9.三元运算操作符有了简写形式: ?:.

10.HTTP 流包裹器将从 200 到 399 全部的状态码都视为成功。

11.动态访问静态方法变为可能.

12.异常可以被内嵌.

13.新增了循环引用的垃圾回收器并且默认是开启的.

14.mail() 现在支持邮件发送日志. (注意: 仅支持通过该函数发送的邮件.)