New Features
PHP Core
Readonly Amendments
Anonymous classes may now be marked as readonly.
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
/*
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:9000CLI
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.
Added properties DOMNode::$isConnected and DOMNameSpaceNode::$isConnected.
Added properties DOMNode::$parentElement and DOMNameSpaceNode::$parentElement.
FFI
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.