xref: /PHP-5.4/UPGRADING (revision cc22f021)
1$Id$
2
3PHP 5.4 UPGRADE NOTES
4
5===========
60. Contents
7===========
8
91. Changes to INI directives
102. Changes to reserved words and classes
113. Changes to engine behavior
124. Changes to existing functions
13   a. unserialize() change
145. Changes to existing classes
156. Changes to existing methods
167. Deprecated Functionality
178. Removed Functionality
18     a. Removed features
19     b. Removed functions
20     c. Removed syntax
21     d. Removed hash algorithms
229. Extension Changes:
23     a. Extensions no longer maintained
24     b. Extensions with changed behavior
2510. Changes in SAPI support
2611. Windows support
2712. New in PHP 5.4:
28     a. New features
29     b. Syntax additions
30     c. New functions
31     d. New global constants
32     e. New classes
33     f. New methods
34     g. New hash algorithms
35
36=============================
371. Changes to INI directives
38=============================
39
40- PHP 5.4 now checks at compile time if /dev/urandom or /dev/arandom
41  are present. If either is available, session.entropy_file now
42  defaults to that file and session.entropy_length defaults to 32.
43  This provides non-blocking entropy to session id generation. If you
44  do not want extra entropy for your session ids, add:
45
46    session.entropy_file=
47    session.entropy_length=0
48
49  to your php.ini to preserve pre-PHP 5.4 behavior.
50
51- Deprecated php.ini directives will now throw an E_CORE_WARNING's
52  instead of the previous E_WARNING's.
53
54- The following php.ini directives are no longer available in PHP 5.4
55  and will now throw an E_CORE_ERROR upon startup:
56  - allow_call_time_pass_reference
57  - define_syslog_variables
58  - highlight.bg
59  - magic_quotes_gpc
60  - magic_quotes_runtime
61  - magic_quotes_sybase
62  - register_globals
63  - register_long_arrays
64  - safe_mode
65  - safe_mode_gid
66  - safe_mode_include_dir
67  - safe_mode_exec_dir
68  - safe_mode_allowed_env_vars
69  - safe_mode_protected_env_vars
70  - session.bug_compat_42
71  - session.bug_compat_warn
72  - y2k_compliance
73  - zend.ze1_compatibility_mode
74
75- the following new php.ini directives were added:
76  - max_input_vars - specifies how many GET/POST/COOKIE input
77    variables may be accepted. The default value is 1000.
78
79- E_ALL now includes E_STRICT.
80
81- The recommended production value for error_reporting changed to E_ALL &
82  ~E_DEPRECATED & ~E_STRICT.
83
84- Added new session support directives:
85    session.upload_progress.enabled
86    session.upload_progress.cleanup
87    session.upload_progress.prefix
88    session.upload_progress.name
89    session.upload_progress.freq
90    session.upload_progress.min_freq
91
92- Added a zend.multibyte directive as a replacement of the PHP compile time
93  configuration option --enable-zend-multibyte. Now the Zend Engine always
94  contains code for multibyte support, which can be enabled or disabled at
95  runtime. Note: It doesn't make a lot of sense to enable this option if
96  ext/mbstring is not enabled, because most functionality is implemented by
97  mbstrings callbacks.
98
99- Added zend.script_encoding. This value will be used unless a
100  "declare(encoding=...)" directive appears at the top of the script.
101
102- Added zend.signal_check to check for replaced signal handlers on shutdown
103
104- Added enable_post_data_reading, which is enabled by default. When it's
105  disabled, the POST data is not read (or processed); the behavior is similar
106  to that of other request methods with body, like PUT. This allows reading
107  the raw POST data in multipart requests and reading/processing the POST data
108  in a stream fashion (through php://input) without having it copied in memory
109  multiple times.
110
111- Added windows_show_crt_warning. This directive shows the CRT warnings when
112  enabled. These warnings were displayed by default until now. It is disabled
113  by default.
114
115- Added cli.pager to set a pager for CLI interactive shell output.
116
117- Added cli.prompt to configure the CLI interactive shell prompt.
118
119- Added cli_server.color to enable the CLI web server to use ANSI color coding
120  in terminal output.
121
122========================================
1232. Changes to reserved words and classes
124========================================
125
126- "callable", "insteadof" and "trait" are now reserved words.
127
128=============================
1293. Changes to engine behavior
130=============================
131
132- The __construct arguments of an extended abstract constructor must
133  now match:
134
135  abstract class Base
136  {
137    abstract public function __construct();
138  }
139  class Foo extends Base
140  {
141    public function __construct($bar) {}
142  }
143
144  This now emits a Fatal error due the incompatible declaration.
145
146- In previous versions, superglobal names could be used for parameter
147  names, thereby shadowing the corresponding superglobal. In PHP 5.4
148  this now causes a fatal error such as "Cannot re-assign auto-global
149  variable GLOBALS".
150
151- Turning null, false or an empty string into an object by adding a
152  property will now emit a warning instead of an E_STRICT error.
153
154  $test = null;
155  $test->baz = 1;
156
157  To create a generic object you can use StdClass:
158
159  $test = new StdClass;
160  $test->baz = 1;
161
162- Converting an array to a string now will cause an E_NOTICE warning.
163
164- Non-numeric string offsets, e.g. $a['foo'] where $a is a string, now
165  return false on isset() and true on empty(), and produce warning if
166  trying to use them. Offsets of types double, bool and null produce
167  notice. Numeric strings ($a['2']) still work as before.
168
169  Note that offsets like '12.3' and '5 and a half' are considered
170  non-numeric and produce warning, but are converted to 12 and 5
171  respectively for backwards compatibility reasons.
172
173- Long numeric strings that do not fit in integer or double (such as
174  "92233720368547758070") are compared using string comparison if
175  they could otherwise result in precision loss - since 5.4.4.
176
177- Closures now support scopes and $this and can be rebound to
178  objects using Closure::bind() and Closure::bindTo().
179
180- <?= is now always available regardless of the short_open_tag
181  setting.
182
183- Parse error messages are changed to contain more information about
184  the error.
185
186- __clone and __destruct since 5.4.4 follow the same scoping rules as
187  the rest of the methods (see bug #61782 for details).
188
189================================
1904. Changes to existing functions
191================================
192
193- array_combine now returns array() instead of FALSE when two empty arrays are
194  provided as parameters.
195
196- dns_get_record() has an extra parameter which allows requesting DNS records
197  by numeric type and makes the result include only the raw data of the
198  response.
199
200- call_user_func_array() no longer allows call-time pass by reference.
201
202- the default character set for htmlspecialchars() and htmlentities() is
203  now UTF-8. In previous versions it was ISO-8859-1. Note that changing
204  your output charset via the php.ini default_charset directive does not
205  affect htmlspecialchars/htmlentities unless you are passing "" (an
206  empty string) as the encoding parameter to your htmlspecialchars/htmlentities
207  calls.
208
209- htmlentities() and htmlspecialchars() are stricter in the code units they
210  accept for the asian encodings. For Big5-HKSCS, the octets 0x80 and 0xFF are
211  rejected. For GB2312/EUC-CN, the octets 0x8E, 0x8F, 0xA0 and 0xFF are
212  rejected. For SJIS, the octets 0x80, 0xA0, 0xFD, 0xFE and 0xFF are rejected,
213  except maybe after a valid starting byte. For EUC-JP, the octets 0xA0 and
214  0xFF are rejected.
215
216- htmlentities() now emits an E_STRICT warning when used with asian characters,
217  as in that case htmlentities has (and already had before this version) the
218  same functionality as htmlspecialchars.
219
220- htmlentities() no longer numerically encodes high characters for single-byte
221  encodings (except when there's actually a corresponding named entity). This
222  behavior was not documented and was inconsistent with that for "UTF-8".
223
224- html_entity_decode() and htmlspecialchars_decode() behave more consistently,
225  now decoding entities in malformed strings such as "&&amp;" or "&#&amp;".
226
227- htmlentities(), htmlspecialchars(), html_entity_decode(), and
228  htmlspecialchars_decode: Added the flags ENT_HTML401, ENT_XML1, ENT_XHTML,
229  and ENT_HTML5. The behavior of these functions including, but not limited to,
230  the characters that are encoded and the entities that are decoded depend on
231  the document type that is specified by those flags.
232
233- htmlentities() and htmlspecialchars() with !$double_encode do more strict
234  checks on the validity of the entities. Numerical entities are checked for a
235  valid range (0 to 0x10FFFF); if the flag ENT_DISALLOWED is given, the
236  validity of such numerical entity in the target document type is also
237  checked. Named entities are checked for necessary existence in the target
238  document type instead of only checking whether they were constituted by
239  alphanumeric characters.
240
241- The flag ENT_DISALLOWED was added. In addition to the behavior described in
242  the item before, it also makes htmlentities() and htmlspecialchars()
243  substitute characters that appear literally in the argument string and which
244  are not allowed in the target document type with U+FFFD (UTF-8) or &#xFFFD;.
245
246- The flag ENT_SUBSTITUTE was added. This flag makes invalid multibyte
247  sequences be replaced by U+FFFD (UTF-8) or &#FFFD; by htmlspecialchars() and
248  htmlentities(). It is an alternative to the default behavior, which just
249  returns an empty string and to ENT_IGNORE, which is a security risk. The
250  behavior follows the recommendations of Unicode Technical Report #36.
251
252- htmlspecialchars_decode() and html_entity_decode() now decode &apos; if the
253  document type is ENT_XML1, ENT_XHTML, or ENT_HTML5.
254
255- Charset detection with $charset == '' no longer turns to mbstring's
256  internal encoding defined through mb_internal_encoding(). Only the encoding
257  defined through the php.ini setting mbstring.internal_encoding is considered.
258
259- number_format() no longer truncates multibyte decimal points and thousand
260  separators to the first byte.
261
262- The third parameter ($matches) to preg_match_all() is now optional. If
263  omitted, the function will simply return the number of times the pattern was
264  matched in the subject and will have no other side effects.
265
266- The second argument of scandir() now accepts SCANDIR_SORT_NONE (2) as a
267  possible value. This value results in scandir() performing no sorting: on
268  local filesystems, this allows files to be returned in native filesystem
269  order.
270
271- stream_select() now preserves the keys of the passed array, be they numeric or
272  strings. This breaks code that iterated the resulting stream array using a
273  numeric index, but makes easier to identify which of the passed streams are
274  present in the result.
275
276- stream_set_write_buffer() no longer disables the read buffer of a plain
277  stream when 0 is given as the second argument.
278
279- stream_set_write_buffer() no longer changes the chunk size in socket streams.
280
281- fclose() closes streams with resource refcount > 1; it doesn't merely
282  decrement the resource refcount.
283
284- socket_set_options() and socket_get_options() now support multicast options.
285
286- The raw data parameter in openssl_encrypt() and openssl_decrypt() is now an
287  options integer rather than a boolean. A value of true produces the same
288  behavior.
289
290- Write operations within XSLT (for example with the extension sax:output) are
291  disabled by default. You can define what is forbidden with the method
292  XsltProcess::setSecurityPrefs($options).
293
294- Added AES support to OpenSSL.
295
296- openssl_csr_new() expects the textual data to be in UTF-8.
297
298- Added no-padding option to openssl_encrypt() and openssl_decrypt().
299
300- Added a "no_ticket" SSL context option to disable the SessionTicket TLS
301  extension.
302
303- Added new json_encode() options: JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES,
304  JSON_NUMERIC_CHECK, JSON_BIGINT_AS_STRING, JSON_UNESCAPED_UNICODE.
305
306- Added Tokyo Cabinet and Berkley DB 5 support to DBA extension.
307
308- Added support for CURLOPT_MAX_SEND_SPEED_LARGE and CURLOPT_MAX_RECV_SPEED_LARGE
309  to cURL.
310
311- Added optional argument to debug_backtrace() and debug_print_backtrace()
312  to limit the amount of stack frames returned.
313
314- Fixed crypt_blowfish handling of 8-bit characters. crypt() in Blowfish mode
315  now supports hashes marked $2a$, $2x$ and $2y$.
316
317- mbstring now supports following encodings: Shift_JIS/UTF-8 Emoji,
318  JIS X0213:2004 (Shift_JIS-2004, EUC-JP-2004, ISO-2022-JP-2004),
319  MacJapanese (Shift_JIS), gb18030.
320
321- Added encode and decode in hex format to mb_encode_numericentity() and
322  mb_decode_numericentity().
323
324- Added support for SORT_NATURAL and SORT_FLAG_CASE in array sort functions:
325  sort(), rsort(), ksort(), krsort(), asort(), arsort() and array_multisort().
326
327- is_a() and is_subclass_of() now have third boolean parameter, which specifies
328  if the first argument can be a string class name. Default if false for is_a
329  and true for is_subclass_of() for BC reasons.
330
331- ob_start() will now treat a chunk size of 1 as meaning 1 byte, rather than
332  the previous special case behavior of treating it as 4096 bytes.
333
334- idn_to_ascii() and idn_to_utf8() now take two extra parameters, one indicating
335  the variant (IDNA 2003 or UTS #46) and another, passed by reference, to return
336  details about the operation in case UTS #46 is chosen.
337
338- gzencode() used with FORCE_DEFLATE now generates RFC1950 compliant data.
339
340- ob_start() no longer starts multiple output buffers when passed
341  array("callback1", "callback2", "callback3", ...).
342
343- Since 5.4.4, "php://fd" stream syntax is available only in CLI build.
344
345- Since 5.4.5, resourcebundle_create() accepts null for the first two arguments.
346
347- Since 5.4.6, SimpleXMLElement::getDocNamespaces() has and extra parameter which
348  allows for toggling if the list of namespaces starts from the document root
349  or from the node you call the method on
350
351- Since 5.4.7, ctor is always called when new user stream wrapper object is created.
352  Before, it was called only when stream_open was called.
353
3544a. unserialize() change
355------------------------
356
357- Starting PHP 5.4.29, the bug fix for bug #67072 introduces a change to
358  unserialize() function, detailed below:
359
360    If the string looking like 'O:..:"ClassName":...' is unserialized, and
361    the class named is an internal class that declares custom unserializer
362    function, or extends such class, unserialize would fail.
363
364    Using O: for user classes not extending internal classes (including
365    those implementing Serializable) is still supported in 5.4, though
366    it is deprecated and may not be supported in 5.6 for classes that do not
367    originally serialize to O:. Same for using O: for internal classes
368    implementing Serializable (like ArrayObject) and classes that extend
369    them.
370
371    The reason for that is that O: format is meant to be used with classes
372    that do not define custom handlers, and was never intended for the use
373    with classes that do. When used with the class that relies on custom
374    unserializer, it can leave the object of such internal class in an
375    inconsistent state which has been observed to result in crashes and may
376    also lead to memory corruption and ultimately even arbitrary code
377    execution. This was never the intended use of unserializer, and mere
378    possibility of doing this constitutes a bug, since the data passed to
379    unserialize() is not a valid serialization of any object. Since there
380    are many applications applying unserialize() to untrusted data, this
381    presents a potential security vulnerability. Thus, keeping such bug in
382    the code base was considered too dangerous.
383
384    We are aware that some applications use O: format as a way to
385    instantiate classes. This was never the intended usage of serializer,
386    and ReflectionClass methods such as newInstance or
387    newInstanceWithoutConstructor can be used for that. We're working on
388    providing more comprehensive solution for such use cases in PHP 5.6 and
389    welcome the ideas in this area.
390
391    We note also that using unserialize() on any data that is not the result
392    of serialize() call continues to be an unsupported scenario and should
393    not be relied on to produce any specific result.
394
395==============================
3965. Changes to existing classes
397==============================
398
399- Classes that implement stream wrappers can define a method called
400  stream_truncate that will respond to truncation, e.g. through ftruncate.
401  Strictly speaking, this is an addition to the user-space stream wrapper
402  template, not a change to an actual class.
403
404- Classes that implement stream wrappers can define a method called
405  stream_metadata that will be called on touch(), chmod(), chgrp(), chown().
406
407- Arrays cast from SimpleXMLElement now always contain all nodes instead of
408  just the first matching node.
409
410- All SimpleXMLElement children are now always printed when using var_dump(),
411  var_export(), and print_r().
412
413- Added iterator support in MySQLi. mysqli_result implements Traversable.
414
415- Since 5.4.30, SOAPClient has __getCookies() method.
416
417==============================
4186. Changes to existing methods
419==============================
420
421- DateTime::parseFromFormat() now has a "+" modifier to allow trailing text in
422  the string to parse without throwing an error.
423
424- Added the ability to pass options to DOMDocument::loadHTML().
425
426- FilesystemIterator, GlobIterator and (Recursive)DirectoryIterator now use
427  the default stream context.
428
429- Since 5.4.5, the constructor of ResourceBundle accepts NULL for the first two
430  arguments.
431
432===========================
4337. Deprecated Functionality
434===========================
435
436- The following functions are deprecated in PHP 5.4:
437  - mcrypt_generic_end():       use mcrypt_generic_deinit() instead
438  - mysql_list_dbs()
439
440========================
4418. Removed Functionality
442========================
443
444a. Removed features
445
446   The following features have been removed from PHP 5.4:
447
448   - Magic quotes
449   - Register globals
450   - Safe mode
451   - Session extension bug compatibility mode
452   - Y2K compliance mode
453
454b. Removed functions
455
456   The following functions are no longer available in PHP 5.4:
457
458   - define_syslog_variables()
459   - import_request_variables()
460   - session_is_registered()
461   - session_register()
462   - session_unregister()
463   - set_magic_quotes_runtime()
464   - mysqli_bind_param() (alias of mysqli_stmt_bind_param())
465   - mysqli_bind_result() (alias of mysqli_stmt_bind_result())
466   - mysqli_client_encoding() (alias of mysqli_character_set_name())
467   - mysqli_fetch() (alias of mysqli_stmt_fetch())
468   - mysqli_param_count() (alias of mysqli_stmt_param_count())
469   - mysqli_get_metadata() (alias of mysqli_stmt_result_metadata())
470   - mysqli_send_long_data() (alias of mysqli_stmt_send_long_data())
471   - mysqli::client_encoding() (alias of mysqli::character_set_name)
472   - mysqli_stmt::stmt() (never worked/always throws, undocumented)
473
474c. Removed syntax
475
476   - break $var;
477   - continue $var;
478
479d. Removed hash algorithms
480
481   - Salsa10 and Salsa20, which are actually stream ciphers
482
483====================
4849. Extension Changes
485====================
486
487a. Extensions no longer maintained
488
489   - ext/sqlite is no longer part of the base distribution and has been moved
490     to PECL. Use sqlite3 or PDO_SQLITE instead.
491
492b. Extensions with changed behavior
493
494   - The MySQL extensions (ext/mysql, mysqli and PDO_MYSQL) use mysqlnd
495     as the default library now. It is still possible to use libmysql by
496     specifying a path to the configure options.
497
498   - PDO_MYSQL: Support for linking with MySQL client libraries older
499     than 4.1 is removed.
500
501   - The session extension now can hook into the file upload feature
502     in order to provide upload progress information through session
503     variables.
504
505   - SNMP extension
506     - Functions in SNMP extension now returns FALSE on every error
507       condition including SNMP-related (no such instance, end of MIB,
508       etc). Thus, in patricular, breaks previous behavior of get/walk
509       functions returning an empty string on SNMP-related errors.
510     - Multi OID get/getnext/set queries are now supported.
511     - New constants added for use in snmp_set_oid_output_format()
512       function.
513     - Function snmp_set_valueretrieval() changed it's behavior:
514	    SNMP_VALUE_OBJECT can be combined with one of
515	    SNMP_VALUE_PLAIN or SNMP_VALUE_LIBRARY resulting OID value
516	    changes. When no SNMP_VALUE_PLAIN or SNMP_VALUE_LIBRARY
517	    is supplied with SNMP_VALUE_OBJECT, SNMP_VALUE_LIBRARY is used.
518	    Prior to 5.4.0 when no SNMP_VALUE_PLAIN or SNMP_VALUE_LIBRARY
519	    was supplied with SNMP_VALUE_OBJECT, SNMP_VALUE_PLAIN was used.
520     - Added feature-rich OO API (SNMP class)
521     - Dropped UCD-SNMP compatibility code. Consider upgrading to
522       net-snmp v5.3+. Net-SNMP v5.4+ is required for Windows version.
523     - In sake of adding support for IPv6 DNS name resolution of
524       remote SNMP agent (peer) is done by extension now, not by Net-SNMP
525       library anymore.
526
527   - Date extension
528     - Setting the timezone with the TZ environment variable is no longer
529       supported, instead date.timezone and/or date_default_timezone_set()
530       have to be used.
531     - The extension will no longer guess the default timezone if none
532       is set with date.timezone and/or date_default_timezone_set().
533       Instead it will always fall back to "UTC".
534
535   - Hash extension
536     - the output of the tiger hash family has been corrected, see
537       https://bugs.php.net/61307
538
539===========================
54010. Changes in SAPI support
541===========================
542
543- A REQUEST_TIME_FLOAT value returns a floating point number indicating the
544  time with microsecond precision. All SAPIs providing this value should be
545  returning float and not time_t.
546
547- apache_child_terminate(), getallheaders(), apache_request_headers()
548  and apache_response_headers() are now supported on FastCGI.
549
550- The interactive shell allows a shortcut #inisetting=value to change php.ini
551  settings at run-time.
552
553- The interactive shell now works with the shared readline extension.
554
555- The interactive shell no longer terminates on fatal errors.
556
557- A new PHP CLI command line option --rz <name> shows information about the
558  named Zend extension.
559
560===================
56111. Windows support
562===================
563
564- is_link now works properly for symbolic links on Windows Vista
565  or later. Earlier systems do not support symbolic links.
566
567- As of PHP 5.4.5 and above the COM extension isn't compiled statically in PHP
568  anymore but shared. It'll still be delivered with the standard PHP release but
569  must be activated manually with the "extension = php_com_dotnet.dll" directive
570  in php.ini.
571
572- Apache 2.4 handler is supported as of PHP 5.4.9
573
574==================
57512. New in PHP 5.4
576==================
577
578a. New Features
579
580  - A built-in CLI web server for testing purposes is now available:
581     $ php -S 127.0.0.1:8888
582
583  - File Upload Progress support is implemented in the Session extension.
584
585b. Syntax additions
586
587  - Traits:
588      trait HelloWorld {
589	  public function sayHello() {
590	      echo 'Hello World!';
591	  }
592      }
593
594      class CanIGetHello {
595	  use HelloWorld;
596      }
597
598      $hello = new CanIGetHello();
599      $hello->sayHello();
600
601  - Function call result array access, e.g.:
602      foo()[0]
603      $foo->bar()[0]
604
605  - Callable typehint indicating argument must be callable:
606      function foo(callable $do) {
607      }
608      foo("strcmp");
609      foo(function() {});
610      $o = new ArrayObject();
611      foo(array($o, "count"));
612
613  - Short array syntax:
614      $a = [1, 2, 3, 4];
615      $a = ['one' => 1, 'two' => 2, 'three' => 3, 'four' => 4];
616      $a = ['one' => 1, 2, 'three' => 3, 4];
617
618  - Binary number format:
619      0b00100 0b010101
620
621  - Chained string array offsets now work.
622      $a = "abc";
623      echo $a[0][0];
624
625  - Anonymous functions now support using $this and class scope.
626    Anonymous function can be declared as "static" to ignore the scope.
627
628  - Class::{expr}() syntax is now supported:
629      class A {
630	  static function foo() {
631	      echo "Hello world!\n";
632	  }
633      }
634      $x = "f";
635      $y = "o";
636      A::{$x.$y.$y}();
637
638  - Class member access on instantiation:
639      (new foo)->method()
640      (new foo)->property
641      (new foo)[0]
642
643
644c. New functions
645
646  - Core:
647    - get_declared_traits()
648    - getimagesizefromstring()
649    - hex2bin()
650    - header_register_callback()
651    - http_response_code()
652    - stream_set_chunk_size()
653    - socket_import_stream()
654    - trait_exists()
655
656  - Intl:
657    - transliterator_create()
658    - transliterator_create_from_rules()
659    - transliterator_create_inverse()
660    - transliterator_get_error_code()
661    - transliterator_get_error_message()
662    - transliterator_list_ids()
663    - transliterator_transliterate()
664
665  - LDAP:
666    - ldap_control_paged_result()
667    - ldap_control_paged_result_response()
668    - ldap_modify_batch (5.4.26)
669
670  - libxml:
671    - libxml_set_external_entity_loader()
672
673  - mysqli:
674    - mysqli_error_list()
675    - mysqli_stmt_error_list()
676
677  - pgsql
678    - pg_escape_identifier() (5.4.4)
679    - pg_escape_literal() (5.4.4)
680
681  - Session:
682    - session_register_shutdown()
683    - session_status()
684
685  - SPL
686    - class_uses()
687
688  - SplFixedArray
689    - SplFixedArray::__wakeup() (5.4.18)
690
691d. New global constants
692
693  - CURLOPT_MAX_RECV_SPEED_LARGE
694  - CURLOPT_MAX_SEND_SPEED_LARGE
695  - ENT_DISALLOWED
696  - ENT_HTML401
697  - ENT_HTML5
698  - ENT_SUBSTITUTE
699  - ENT_XHTML
700  - ENT_XML1
701  - IPPROTO_IP
702  - IPPROTO_IPV6
703  - IPV6_MULTICAST_HOPS
704  - IPV6_MULTICAST_IF
705  - IPV6_MULTICAST_LOOP
706  - IP_MULTICAST_IF
707  - IP_MULTICAST_LOOP
708  - IP_MULTICAST_TTL
709  - JSON_BIGINT_AS_STRING
710  - JSON_OBJECT_AS_ARRAY
711  - JSON_PRETTY_PRINT
712  - JSON_UNESCAPED_SLASHES
713  - JSON_UNESCAPED_UNICODE
714  - LIBXML_HTML_NODEFDTD
715  - LIBXML_HTML_NOIMPLIED
716  - LIBXML_PEDANTIC
717  - MCAST_JOIN_GROUP
718  - MCAST_LEAVE_GROUP
719  - MCAST_BLOCK_SOURCE
720  - MCAST_UNBLOCK_SOURCE
721  - MCAST_JOIN_SOURCE_GROUP
722  - MCAST_LEAVE_SOURCE_GROUP
723  - OPENSSL_CIPHER_AES_128_CBC
724  - OPENSSL_CIPHER_AES_192_CBC
725  - OPENSSL_CIPHER_AES_256_CBC
726  - OPENSSL_RAW_DATA
727  - OPENSSL_ZERO_PADDING
728  - PHP_OUTPUT_HANDLER_CLEAN
729  - PHP_OUTPUT_HANDLER_CLEANABLE
730  - PHP_OUTPUT_HANDLER_DISABLED
731  - PHP_OUTPUT_HANDLER_FINAL
732  - PHP_OUTPUT_HANDLER_FLUSH
733  - PHP_OUTPUT_HANDLER_FLUSHABLE
734  - PHP_OUTPUT_HANDLER_REMOVABLE
735  - PHP_OUTPUT_HANDLER_STARTED
736  - PHP_OUTPUT_HANDLER_STDFLAGS
737  - PHP_OUTPUT_HANDLER_WRITE
738  - PHP_QUERY_RFC1738
739  - PHP_QUERY_RFC3986
740  - PHP_SESSION_ACTIVE
741  - PHP_SESSION_DISABLED
742  - PHP_SESSION_NONE
743  - SCANDIR_SORT_ASCENDING
744  - SCANDIR_SORT_DESCENDING
745  - SCANDIR_SORT_NONE
746  - SORT_FLAG_CASE
747  - SORT_NATURAL
748  - STREAM_META_ACCESS
749  - STREAM_META_GROUP
750  - STREAM_META_GROUP_NAME
751  - STREAM_META_OWNER
752  - STREAM_META_OWNER_NAME
753  - STREAM_META_TOUCH
754  - T_CALLABLE
755  - T_INSTEADOF
756  - T_TRAIT
757  - T_TRAIT_C
758  - ZLIB_ENCODING_DEFLATE
759  - ZLIB_ENCODING_GZIP
760  - ZLIB_ENCODING_RAW
761  - U_IDNA_DOMAIN_NAME_TOO_LONG_ERROR
762  - IDNA_CHECK_BIDI
763  - IDNA_CHECK_CONTEXTJ
764  - IDNA_NONTRANSITIONAL_TO_ASCII
765  - IDNA_NONTRANSITIONAL_TO_UNICODE
766  - INTL_IDNA_VARIANT_2003
767  - INTL_IDNA_VARIANT_UTS46
768  - IDNA_ERROR_EMPTY_LABEL
769  - IDNA_ERROR_LABEL_TOO_LONG
770  - IDNA_ERROR_DOMAIN_NAME_TOO_LONG
771  - IDNA_ERROR_LEADING_HYPHEN
772  - IDNA_ERROR_TRAILING_HYPHEN
773  - IDNA_ERROR_HYPHEN_3_4
774  - IDNA_ERROR_LEADING_COMBINING_MARK
775  - IDNA_ERROR_DISALLOWED
776  - IDNA_ERROR_PUNYCODE
777  - IDNA_ERROR_LABEL_HAS_DOT
778  - IDNA_ERROR_INVALID_ACE_LABEL
779  - IDNA_ERROR_BIDI
780  - IDNA_ERROR_CONTEXTJ
781
782e. New classes
783
784  - Reflection:
785    - ReflectionZendExtension
786
787  - Intl:
788    - Transliterator
789    - Spoofchecker
790
791  - JSON:
792    - JsonSerializable
793
794  - Session:
795    - SessionHandler
796
797  - SNMP:
798    - SNMP
799
800  - SPL:
801    - CallbackFilterIterator
802    - RecursiveCallbackFilterIterator
803
804f. New methods
805
806  - Closure:
807    - Closure::bind()
808    - Closure::bindTo()
809
810  - Reflection:
811    - ReflectionClass::getTraitAliases()
812    - ReflectionClass::getTraitNames()
813    - ReflectionClass::getTraits()
814    - ReflectionClass::isCloneable()
815    - ReflectionClass::isTrait()
816    - ReflectionClass::newInstanceWithoutConstructor()
817    - ReflectionExtension::isPersistent()
818    - ReflectionExtension::isTemporary()
819    - ReflectionFunction::getClosure()
820    - ReflectionFunction::getClosureScopeClass()
821    - ReflectionFunction::getClosureThis()
822    - ReflectionFunctionAbstract::getClosureScopeClass()
823    - ReflectionFunctionAbstract::getClosureThis()
824    - ReflectionMethod::getClosure()
825    - ReflectionMethod::getClosureScopeClass()
826    - ReflectionMethod::getClosureThis()
827    - ReflectionObject::getTraitAliases()
828    - ReflectionObject::getTraitNames()
829    - ReflectionObject::getTraits()
830    - ReflectionObject::isCloneable()
831    - ReflectionObject::isTrait()
832    - ReflectionObject::newInstanceWithoutConstructor()
833    - ReflectionParameter::canBePassedByValue()
834    - ReflectionParameter::isCallable()
835
836  - PDO_DBLIB:
837    - PDO::newRowset()
838
839  - SPL:
840    - DirectoryIterator::getExtension()
841    - RegexIterator::getRegex()
842    - SplDoublyLinkedList::serialize()
843    - SplDoublyLinkedList::unserialize()
844    - SplFileInfo::getExtension()
845    - SplFileObject::fputcsv()
846    - SplObjectStorage::getHash()
847    - SplQueue::serialize
848    - SplQueue::unserialize
849    - SplStack::serialize
850    - SplStack::unserialize
851    - SplTempFileObject::fputcsv
852
853  - XSLT:
854    - XsltProcessor::setSecurityPrefs()
855    - XsltProcessor::getSecurityPrefs()
856
857  - Zlib:
858    - zlib_decode()
859    - zlib_encode()
860
861g. New Hash algorithms
862
863  - fnv132
864  - fnv164
865  - joaat
866