Anonymous classes may now be marked as readonly.
Readonly properties can now be reinitialized during cloning.
Class, interface, trait, and enum constants now support type declarations.
Closures created from magic methods can now accept named arguments.
The final modifier may now be used when using a method from a trait.
Added the #[\Override] attribute to check that a method exists in a parent class or implemented interface.
Class constants can now be accessed dynamically using the
C::{$name}
syntax.
Static variable initializers can now contain arbitrary expressions.
php.ini now supports fallback/default value syntax.
<?php
/*
On /path/to/user.ini contains the following settings:
listen = localhost:${DRUPAL_FPM_PORT:-9000}
*/
$user_ini = parse_ini_file('/path/to/user.ini');
echo $user_ini['listen']; // localhost:9000
It is now possible to lint multiple files.
Added properties DOMElement::$className and DOMElement::$id. These are not binary-safe at the moment because of underlying limitations of libxml2. This means that the property values will be cut off at a NUL byte.
Added properties DOMNode::$isConnected and DOMNameSpaceNode::$isConnected.
Added properties DOMNode::$parentElement and DOMNameSpaceNode::$parentElement.
It is now possible to assign FFI\CData to other FFI\CData. Meaning CData can now be assigned to structs and fields.
opcache_get_status()['scripts'][n]['revalidate']
now contains
a Unix timestamp of when the next revalidation of the scripts timestamp is
due, dictated by the
opcache.revalidate_freq
INI directive.
posix_getrlimit() now takes an optional
$res
parameter to allow fetching a single resource limit.
posix_isatty() now raises type warnings for integers following the usual ZPP semantics.
posix_ttyname() now raises type warnings for integers following the usual ZPP semantics and value warnings for invalid file descriptor integers.
Streams can now emit the STREAM_NOTIFY_COMPLETED
notification. This was previously not implemented.