Php版本不同版本比较

来源:互联网 发布:keep软件的瘦腿好用吗 编辑:程序博客网 时间:2024/05/17 21:57

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 [123][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_arraysphp.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_tagphp.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() 现在支持邮件发送日志. (注意: 仅支持通过该函数发送的邮件.)



0 0
原创粉丝点击