PHP各版本迭代

来源:互联网 发布:电脑魔方计时器软件 编辑:程序博客网 时间:2024/05/22 09:52

注:部分引用《php版本历史》

php5.3


改动:

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

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

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

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

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

6、魔术方法get,set,isset,unset, and __call 应该总是公共的(public)且不能是静态的(static). 方法签名是必须的.

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

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

9、goto,namespace关键词被保留。

新功能:

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

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

3、增加了goto支持。

4、增加了闭包支持。

5、新增了两个魔术方法,callStatic 和invoke.

6、添加了 Nowdoc 语法支持, 类似于 Heredoc 语法, 但是包含单引号.就是<<'EOF'这样的语法。

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

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

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

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

11、允许动态访问静态方法。

12、异常可以被内嵌

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

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

php5.4

改动:

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、调用时的引用传递 被移除。就是不能有f(&$a)这样的形式。

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 错误。偏移量类型是布尔和 null 则产生一条 E_NOTICE 错误。 数字字符串(比如a[′2′])仍像以前一样运行。注意像类似′12.3′和′5foobar′这样的偏移量将被视为非数字并产生一条EWARNING错误,但因为向后兼容的原因它们会被分别转换成12和5。注意:下列代码返回不同的结果。str='abc';var_dump(isset($str['x'])); // 在 PHP 5.4 或更新版本返回 false,但在 PHP 5.3 或更低版本返回 true

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

9、NULL 、FALSE 、或 一个空字符串被添加成一个对象的属性时将发出一条 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、trait,callable,insteadof关键词被保留。

新特性:

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.5

改动:

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

2、pack() 和 unpack() 函数的变化

3、移除 PHP logo GUIDs

新特性:

1、新增 Generators,包括yield关键字

2、新增 finally 关键字

3、foreach 现在支持 list()

4、empty() 现在支持传入一个任意表达式,而不仅是一个变量。

5、非变量array和string也能支持下标获取了

6、类名通过::class可以获取

7、增加了opcache扩展

php5.6

改动:

暂时还没整理

新特性:

1、PHP常量支持表达式,包括数学运算、字符串处理等,可以被当作函数的输入参数

2、新增通过...语法定义可变参函数,代替func_get_args()折中实现方法

3、数组和可转换对象被当作函数参数时,可以通过...语法实现自动解包元素,就像其他语言比如Ruby一样的功能。

4、新增求幂运算符**,该运算符的结合方向是向左结合。

5、use语法可以用来引用函数、变量,除了类之外

6、PHP新增了调试模块phpdbg,通过SAPI模块的方式实现调试功能

7、配置项default_charset定义htmlentities()、html_entity_decode()、htmlspecialchars()函数使用编码,默认为utf-8

8、php://input支持多次读取

9、支持超过2G大文件上传

10、新增魔术方法__debugInfo()

11、pgsql支持异步操作

php 7.0.0

改动:

暂无

新特性:

1、性能大幅提升

2、函数参数、返回值增加了变量类型的限定

3、try{}catch可以捕获致命错误



作者:Joeyjoey
链接:http://www.jianshu.com/p/0e8bc65b4cce
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
原创粉丝点击