PHP 5.5.0 Alpha 1 发布

PHP 5.5.0 发布了首个 Alpha 测试版本,该版本包含众多改进和 bug 修复,详细列表请看这里

PHP(PHP:Hypertext Preprocessor)是一种在电脑上执行的脚本语言,主要是用途在于处理动态网页,也包含了命令列执行接口(command line interface),或者产生图形使用者接口(GUI)程式。

PHP 最早由 Rasmus Lerdorf 在1995年发明,现在PHP实质上的标准由PHP Group和开放源代码社群维护。PHP 以 PHP License 作为许可协议,不过因为这个协议限制了PHP名称的使用,所以和开放源代码许可协议GPL不相容。

 

- General improvements:

6   . Added support for generators. (Nikita Popov)

7   . Add simplified password hashing API 

8     (https://wiki.php.net/rfc/password_hash). (Anthony Ferrara)

9   . Add generators and coroutines (https://wiki.php.net/rfc/generators).

10     (Nikita Popov)

11   . Support list in foreach (https://wiki.php.net/rfc/foreachlist). (Laruence)

12   . Implemented 'finally' keyword (https://wiki.php.net/rfc/finally). (Laruence)

13   . Drop Windows XP and 2003 support. (Pierre)

14   . Improve set_exception_handler while doing reset.(Laruence)

15   . Support constant array/string dereferencing. (Laruence)

16   . Add support for using empty() on the result of function calls and

17     other expressions (https://wiki.php.net/rfc/empty_isset_exprs).

18     (Nikita Popov)

19   . Remove php_logo_guid(), php_egg_logo_guid(), php_real_logo_guid(),

20     zend_logo_guid(). (Adnrew Faulds)

21

22 - Calendar:

23   . Fixed bug #54254 (cal_from_jd returns month = 6 when there is only one Adar)

24     (Stas, Eitan Mosenkis)

25

26 - Core:

27   . Added boolval(). (Jille Timmermans)

28   . Added "Z" option to pack/unpack. (Gustavo)

29   . Implemented FR #60738 (Allow 'set_error_handler' to handle NULL).

30     (Laruence, Nikita Popov)

31   . Added optional second argument for assert() to specify custom message. Patch

32     by Lonny Kapelushnik (lonny@lonnylot.com). (Lars)

33   . Fixed bug #18556 (Engine uses locale rules to handle class names). (Stas)

34   . Fixed bug #61681 (Malformed grammar). (Nikita Popov, Etienne, Laruence)

35   . Fixed bug #61038 (unpack("a5", "str\0\0") does not work as expected).

36     (srgoogleguy, Gustavo)

37   . Return previous handler when passing NULL to set_error_handler and

38     set_exception_handler. (Nikita Popov)

39

40 - cURL:

41   . Added support for CURLOPT_FTP_RESPONSE_TIMEOUT, CURLOPT_APPEND, 

42     CURLOPT_DIRLISTONLY, CURLOPT_NEW_DIRECTORY_PERMS, CURLOPT_NEW_FILE_PERMS, 

43     CURLOPT_NETRC_FILE, CURLOPT_PREQUOTE, CURLOPT_KRBLEVEL, CURLOPT_MAXFILESIZE,

44     CURLOPT_FTP_ACCOUNT, CURLOPT_COOKIELIST, CURLOPT_IGNORE_CONTENT_LENGTH,

45     CURLOPT_CONNECT_ONLY, CURLOPT_LOCALPORT, CURLOPT_LOCALPORTRANGE, 

46     CURLOPT_FTP_ALTERNATIVE_TO_USER, CURLOPT_SSL_SESSIONID_CACHE, 

47     CURLOPT_FTP_SSL_CCC, CURLOPT_HTTP_CONTENT_DECODING, 

48     CURLOPT_HTTP_TRANSFER_DECODING, CURLOPT_PROXY_TRANSFER_MODE, 

49     CURLOPT_ADDRESS_SCOPE, CURLOPT_CRLFILE, CURLOPT_ISSUERCERT, 

50     CURLOPT_USERNAME, CURLOPT_PASSWORD, CURLOPT_PROXYUSERNAME, 

51     CURLOPT_PROXYPASSWORD, CURLOPT_NOPROXY, CURLOPT_SOCKS5_GSSAPI_NEC, 

52     CURLOPT_SOCKS5_GSSAPI_SERVICE, CURLOPT_TFTP_BLKSIZE, 

53     CURLOPT_SSH_KNOWNHOSTS, CURLOPT_FTP_USE_PRET, CURLOPT_MAIL_FROM, 

54     CURLOPT_MAIL_RCPT, CURLOPT_RTSP_CLIENT_CSEQ, CURLOPT_RTSP_SERVER_CSEQ, 

55     CURLOPT_RTSP_SESSION_ID, CURLOPT_RTSP_STREAM_URI, CURLOPT_RTSP_TRANSPORT,

56     CURLOPT_RTSP_REQUEST, CURLOPT_RESOLVE, CURLOPT_ACCEPT_ENCODING, 

57     CURLOPT_TRANSFER_ENCODING, CURLOPT_DNS_SERVERS and CURLOPT_USE_SSL.

58     (Pierrick)

59   . Fixed bug #55635 (CURLOPT_BINARYTRANSFER no longer used. The constant

60     still exists for backward compatibility but is doing nothing). (Pierrick)

61   . Fixed bug #54995 (Missing CURLINFO_RESPONSE_CODE support). (Pierrick)

62

63 - Datetime

64   . Fixed bug #61642 (modify("+5 weekdays") returns Sunday). 

65     (Dmitri Iouchtchenko) 

66

67 - Hash

68   . Added support for PBKDF2 via hash_pbkdf2(). (Anthony Ferrara)

69

70 - Intl

71   . The intl extension now requires ICU 4.0+.

72   . Added intl.use_exceptions INI directive, which controls what happens when

73     global errors are set together with intl.error_level. (Gustavo)

74   . MessageFormatter::format() and related functions now accepted named

75     arguments and mixed numeric/named arguments in ICU 4.8+. (Gustavo)

76   . MessageFormatter::format() and related functions now don't error out when

77     an insufficient argument count is provided. Instead, the placeholders will

78     remain unsubstituted. (Gustavo)

79   . MessageFormatter::parse() and MessageFormat::format() (and their static

80     equivalents) don't throw away better than second precision in the arguments.

81     (Gustavo)

82   . IntlDateFormatter::__construct and datefmt_create() now accept for the

83     $timezone argument time zone identifiers, IntlTimeZone objects, DateTimeZone

84     objects and NULL. (Gustavo)

85   . IntlDateFormatter::__construct and datefmt_create() no longer accept invalid

86     timezone identifiers or empty strings. (Gustavo)

87   . The default time zone used in IntlDateFormatter::__construct and

88     datefmt_create() (when the corresponding argument is not passed or NULL is

89     passed) is now the one given by date_default_timezone_get(), not the

90     default ICU time zone. (Gustavo)

91   . The time zone passed to the IntlDateFormatter is ignored if it is NULL and

92     if the calendar passed is an IntlCalendar object -- in this case, the

93     IntlCalendar's time zone will be used instead. Otherwise, the time zone

94     specified in the $timezone argument is used instead. This does not affect

95     old code, as IntlCalendar was introduced in this version. (Gustavo)

96   . IntlDateFormatter::__construct and datefmt_create() now accept for the

97     $calendar argument also IntlCalendar objects. (Gustavo)

98   . IntlDateFormatter::getCalendar() and datefmt_get_calendar() return false

99     if the IntlDateFormatter was set up with an IntlCalendar instead of the

100     constants IntlDateFormatter::GREGORIAN/TRADITIONAL. IntlCalendar did not

101     exist before this version. (Gustavo)

102   . IntlDateFormatter::setCalendar() and datefmt_set_calendar() now also accept

103     an IntlCalendar object, in which case its time zone is taken. Passing a

104     constant is still allowed, and still keeps the time zone. (Gustavo)

105   . IntlDateFormatter::setTimeZoneID() and datefmt_set_timezone_id() are

106     deprecated. Use IntlDateFormatter::setTimeZone() or datefmt_set_timezone()

107     instead. (Gustavo)

108   . IntlDateFormatter::format() and datefmt_format() now also accept an

109     IntlCalendar object for formatting. (Gustavo)

110   . Added the classes: IntlCalendar, IntlGregorianCalendar, IntlTimeZone,

111     IntlBreakIterator, IntlRuleBasedBreakIterator and

112     IntlCodePointBreakIterator. (Gustavo)

113   . Added the functions: intlcal_get_keyword_values_for_locale(),

114     intlcal_get_now(), intlcal_get_available_locales(), intlcal_get(),

115     intlcal_get_time(), intlcal_set_time(), intlcal_add(),

116     intlcal_set_time_zone(), intlcal_after(), intlcal_before(), intlcal_set(),

117     intlcal_roll(), intlcal_clear(), intlcal_field_difference(),

118     intlcal_get_actual_maximum(), intlcal_get_actual_minimum(),

119     intlcal_get_day_of_week_type(), intlcal_get_first_day_of_week(),

120     intlcal_get_greatest_minimum(), intlcal_get_least_maximum(),

121     intlcal_get_locale(), intlcal_get_maximum(),

122     intlcal_get_minimal_days_in_first_week(), intlcal_get_minimum(),

123     intlcal_get_time_zone(), intlcal_get_type(),

124     intlcal_get_weekend_transition(), intlcal_in_daylight_time(),

125     intlcal_is_equivalent_to(), intlcal_is_lenient(), intlcal_is_set(),

126     intlcal_is_weekend(), intlcal_set_first_day_of_week(),

127     intlcal_set_lenient(), intlcal_equals(),

128     intlcal_get_repeated_wall_time_option(),

129     intlcal_get_skipped_wall_time_option(),

130     intlcal_set_repeated_wall_time_option(),

131     intlcal_set_skipped_wall_time_option(), intlcal_from_date_time(),

132     intlcal_to_date_time(), intlcal_get_error_code(),

133     intlcal_get_error_message(), intlgregcal_create_instance(),

134     intlgregcal_set_gregorian_change(), intlgregcal_get_gregorian_change() and

135     intlgregcal_is_leap_year(). (Gustavo)

136   . Added the functions: intltz_create_time_zone(), intltz_create_default(),

137     intltz_get_id(), intltz_get_gmt(), intltz_get_unknown(),

138     intltz_create_enumeration(), intltz_count_equivalent_ids(),

139     intltz_create_time_zone_id_enumeration(), intltz_get_canonical_id(),

140     intltz_get_region(), intltz_get_tz_data_version(),

141     intltz_get_equivalent_id(), intltz_use_daylight_time(), intltz_get_offset(),

142     intltz_get_raw_offset(), intltz_has_same_rules(), intltz_get_display_name(),

143     intltz_get_dst_savings(), intltz_from_date_time_zone(),

144     intltz_to_date_time_zone(), intltz_get_error_code(),

145     intltz_get_error_message(). (Gustavo)

146   . Added the methods: IntlDateFormatter::formatObject(),

147     IntlDateFormatter::getCalendarObject(), IntlDateFormatter::getTimeZone(),

148     IntlDateFormatter::setTimeZone(). (Gustavo)

149   . Added the functions: datefmt_format_object(), datefmt_get_calendar_object(),

150     datefmt_get_timezone(), datefmt_set_timezone(),

151     datefmt_get_calendar_object(), intlcal_create_instance(). (Gustavo)

152

153 - MCrypt

154   . mcrypt_ecb(), mcrypt_cbc(), mcrypt_cfb() and mcrypt_ofb() now throw

155     E_DEPRECATED. (GoogleGuy)

156

157MySQLi

158   . Dropped support for LOAD DATA LOCAL INFILE handlers when using libmysql.

159     Known for stability problems. (Andrey)

160   . Added support for SHA256 authentication available with MySQL 5.6.6+. (Andrey)

161

162 - PCRE:

163   . Deprecated the /e modifier