New featuresNullable types
Type declarations for parameters and return values can now be marked as
nullable by prefixing the type name with a question mark. This signifies
that as well as the specified type,
The above example will output: string(10) "elePHPant" NULL string(10) "elePHPant" NULL Uncaught Error: Too few arguments to function test(), 0 passed in... Void functions
A void return type has been introduced. Functions declared with
void as their return type must either omit their return statement altogether,
or use an empty return statement.
The above example will output: null int(2) int(1)
Attempting to use a void function's return value simply evaluates to
Symmetric array destructuring
The shorthand array syntax (
Class constant visibilitySupport for specifying the visibility of class constants has been added.
iterable pseudo-typeA new pseudo-type (similar to callable) called iterable has been introduced. It may be used in parameter and return types, where it accepts either arrays or objects that implement the Traversable interface. With respect to subtyping, parameter types of child classes may broaden a parent's declaration of array or Traversable to iterable. With return types, child classes may narrow a parent's return type of iterable to array or an object that implements Traversable.
Multi catch exception handling
Multiple exceptions per catch block may now be specified using the pipe
character (
Support for keys in list
You can now specify keys in list, or its new shorthand
Support for negative string offsets
Support for negative string offsets has been added to the
string manipulation functions
accepting offsets, as well as to
string indexing with
The above example will output: string (1) "e" int(3) Negative string and array offsets are now also supported in the simple variable parsing syntax inside of strings.
The above example will output: The last character of 'bar' is 'r'. Support for AEAD in ext/opensslSupport for AEAD (modes GCM and CCM) have been added by extending the openssl_encrypt and openssl_decrypt functions with additional parameters. Convert callables to Closures with Closure::fromCallableA new static method has been introduced to the Closure class to allow for callables to be easily converted into Closure objects.
The above example will output: string(10) "some value" Asynchronous signal handlingA new function called pcntl_async_signals has been introduced to enable asynchronous signal handling without using ticks (which introduce a lot of overhead).
The above example will output: SIGHUP HTTP/2 server push support in ext/curl
Support for server push has been added to the CURL extension (requires
version 7.46 and above). This can be leveraged through the
curl_multi_setopt function with the new
Stream Context OptionsThe tcp_nodelay stream context option has been added. |