Readonly properties can now be reinitialized during cloning.
Typed Class Constants
Class, interface, trait, and enum constants now support type declarations.
Closures created from magic methods
Closures created from magic methods can now accept named arguments.
The final modifier with a method from a trait
The final modifier may now be used when using a method from a trait.
Override Attribute
Added the #[\Override] attribute to check that a method exists in a parent
class or implemented interface.
Fetch class constant dynamically syntax
Class constants can now be accessed dynamically using the
C::{$name} syntax.
Static variable Initializers
Static variable initializers can now contain arbitrary expressions.
Fallback value syntax for ini variables
php.ini now supports fallback/default value syntax.
<?php
/*
/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
CLI
It is now possible to lint multiple files.
DOM
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.
It is now possible to assign FFI\CData to other FFI\CData.
Meaning CData can now be assigned to structs and fields.
Opcache
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
posix_getrlimit() now takes an optional
resource 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
Streams can now emit the STREAM_NOTIFY_COMPLETED
notification. This was previously not implemented.