PHP 5.5.x 中的大多数改进对现有代码不会有影响。 在生产环境中切换 PHP 版本前应考虑 少许不兼容 和 新特性,并严格测试代码。
尽管大部分现有的 PHP 5 代码不需要更改就可以正常运行,但请注意一些不向后兼容的变更:
不再支持 Windows XP 和 2003
已放弃对 Windows XP 和 2003 的支持。构建 Windows 版本的 PHP 需要 Windows Vista 或更新的系统。
为使 pack() 和 unpack() 更兼容 Perl 做了一些变更:
pack() 现在支持“Z”格式代码,其表现的行为与“a”相同。
unpack() now support the "Z" format code for NULL padded strings, and behaves as "a" did in previous versions: it will strip trailing NULL bytes.且其行为类似上一个版本中的“a”:清除后面的 NULL 字节。
unpack() now keeps trailing NULL bytes when the "a" format code is used.
unpack() now strips all trailing ASCII whitespace when the "A" format code is used.
新的特性
新增 Generators
通过yield关键字添加了对生成器的支持。生成器提供了一种简单的方法来实现简单的迭代器,而不需要实现迭代器接口的类的开销或复杂性。
重新实现range()函数作为生成器的简单示例(至少对于正阶跃值):
新增 finally 关键字
Try Catch块现在支持代码的finally块,不管是否引发了异常,该块都应该运行。
事例
finally 异常处理关键字
foreach 现在支持 list()
foreach 控制结构现在支持通过 list() 构造将嵌套数组分离到单独的变量。例如:
empty() 支持任意表达式
empty() 现在支持传入一个任意表达式,而不仅是一个变量。例如:
array and string literal dereferencing
数组和字符串支持单个元素的下标访问:
改进 GD
对 GD 扩展做了多方面的改进,包括:
翻转支持使用新的 imageflip() 函数。
高级裁剪支持使用 imagecrop() & imagecropauto() 函数。
WebP 的读写分别支持使用 imagecreatefromwebp() & imagewebp() 。
废弃 ext/mysql
原始的 MySQL 扩展 现在被废弃,当连接到数据库时会产生一个 E_DEPRECATED 错误。可使用 MySQLi 或 PDO_MySQL 扩展作为替代。
preg_replace() 中的 /e 修饰符
preg_replace() 函数中用到的 /e 修饰符现在被弃用。可以使用 preg_replace_callback() 函数来替代。
intl 中的废弃
IntlDateFormatter::setTimeZoneID() 和 datefmt_set_timezone_id() 现在被废弃。可分别使用 IntlDateFormatter::setTimeZone() 方法和 datefmt_set_timezone() 函数作为替代。
mcrypt 中的废弃
下列函数已被废弃:
mcrypt_cbc() mcrypt_cfb() mcrypt_ecb() mcrypt_ofb()
新的函数
PHP 核心
intlcal_create_instance()
intlcal_get_keyword_values_for_locale()
intlcal_get_now()
intlcal_get_available_locales()
intlcal_get()
intlcal_get_time()
intlcal_set_time()
intlcal_add()
intlcal_set_time_zone()
intlcal_after()
intlcal_before()
intlcal_set()
intlcal_roll()
intlcal_clear()
intlcal_field_difference()
intlcal_get_actual_maximum()
intlcal_get_actual_minimum()
intlcal_get_day_of_week_type()
intlcal_get_first_day_of_week()
intlcal_get_greatest_minimum()
intlcal_get_least_maximum()
intlcal_get_locale()
intlcal_get_maximum()
intlcal_get_minimal_days_in_first_week()
intlcal_get_minimum()
intlcal_get_time_zone()
intlcal_get_type()
intlcal_get_weekend_transition()
intlcal_in_daylight_time()
intlcal_is_equivalent_to()
intlcal_is_lenient()
intlcal_is_set()
intlcal_is_weekend()
intlcal_set_first_day_of_week()
intlcal_set_lenient()
intlcal_equals()
intlcal_get_repeated_wall_time_option()
intlcal_get_skipped_wall_time_option()
intlcal_set_repeated_wall_time_option()
intlcal_set_skipped_wall_time_option()
intlcal_from_date_time()
intlcal_to_date_time()
intlgregcal_create_instance()
intlgregcal_set_gregorian_change()
intlgregcal_get_gregorian_change()
intlgregcal_is_leap_year()
intltz_create_time_zone()
intltz_create_default()
intltz_get_id()
intltz_get_gmt()
intltz_get_unknown()
intltz_create_enumeration()
intltz_count_equivalent_ids()
intltz_create_time_zone_id_enumeration()
intltz_get_canonical_id()
intltz_get_region()
intltz_get_tz_data_version()
intltz_get_equivalent_id()
intltz_use_daylight_time()
intltz_get_offset()
intltz_get_raw_offset()
intltz_has_same_rules()
intltz_get_display_name()
intltz_get_dst_savings()
intltz_from_date_time_zone()
intltz_to_date_time_zone()
网友评论