同値な要素の並び順

Error message for E_RECOVERABLE errors

The error message for E_RECOVERABLE errors has been changed from "Catchable
fatal error" to "Recoverable fatal error".

$options parameter of unserialize()

The allowed_classes element of the $options parameter of
unserialize() is now strictly typed, i.e. if anything
other than an array or a boolean is given,
unserialize() returns FALSE and issues an E_WARNING.

DateTime constructor incorporates microseconds

DateTime and DateTimeImmutable
now properly incorporate microseconds when constructed from the current time,
either explicitly or with a relative string (e.g. "first day of next
month"). This means that naive comparisons of two newly created
instances will now more likely return FALSE instead of TRUE:

In the Date extension, invalid serialization data for
DateTime or DatePeriod classes,
or timezone initialization failure from serialized data, will now throw an
Error exception from the
__wakeup() or __set_state()
methods, instead of resulting in a fatal error.

In the DBA extension, data modification functions (such as
dba_insert()) will now throw an
Error exception instead of triggering a catchable
fatal error if the key does not contain exactly two elements.

In the DOM extension, invalid schema or RelaxNG validation contexts will now
throw an Error exception instead of resulting in a
fatal error. Similarly, attempting to register a node class that does not
extend the appropriate base class, or attempting to read an invalid property
or write to a readonly property, will also now throw an
Error exception.

In the IMAP extension, email addresses longer than 16385 bytes will throw an
Error exception instead of resulting in a fatal error.

In the Intl extension, failing to call the parent constructor in a class
extending Collator before invoking the parent methods
will now throw an Error instead of resulting in a
recoverable fatal error. Also, cloning a
Transliterator object will now throw an
Error exception on failure to clone the internal
transliterator instead of resulting in a fatal error.

In the LDAP extension, providing an unknown modification type to
ldap_batch_modify() will now throw an
Error exception instead of resulting in a fatal error.

In the mbstring extension, the mb_ereg() and
mb_eregi() functions will now throw a
ParseError exception if an invalid PHP expression is
provided and the 'e' option is used.

In the mysqli extension, attempting to read an invalid property or write to
a readonly property will now throw an Error exception
instead of resulting in a fatal error.

In the Reflection extension, failing to retrieve a reflection object or
retrieve an object property will now throw an Error
exception instead of resulting in a fatal error.

In the Session extension, custom session handlers that do not return strings
for session IDs will now throw an Error exception
instead of resulting in a fatal error when a function is called that must
generate a session ID.

In the SimpleXML extension, creating an unnamed or duplicate attribute will
now throw an Error exception instead of resulting in
a fatal error.

In the SPL extension, attempting to clone an
SplDirectory object will now throw an
Error exception instead of resulting in a fatal
error. Similarly, calling ArrayIterator::append() when
iterating over an object will also now throw an Error
exception.

In the standard extension, the assert() function, when
provided with a string argument as its first parameter, will now throw a
ParseError exception instead of resulting in a
catchable fatal error if the PHP code is invalid. Similarly, calling
forward_static_call() outside of a class scope will now
throw an Error exception.

In the Tidy extension, creating a tidyNode manually
will now throw an Error exception instead of
resulting in a fatal error.

In the WDDX extension, a circular reference when serializing will now throw
an Error exception instead of resulting in a fatal
error.

In the XML-RPC extension, a circular reference when serializing will now
throw an instance of Error exception instead of
resulting in a fatal error.

In the Zip extension, the ZipArchive::addGlob()
method will now throw an Error exception instead of
resulting in a fatal error if glob support is not available.

Lexically bound variables cannot reuse names

Variables bound to a closure via
the use construct cannot use the same name as any
superglobals, $this, or any parameter. For
example, all of these function definition will result in a fatal error: