Proposals for PHP 8


This page is a spot to list and discuss ideas for PHP 8. This is not a place to discuss features which may be accepted in the 7.X series; it is for features which require backwards compatibility breaks to achieve.

Ideas and Proposals

Here are some ideas that have backwards compatibility implications:

  • Unify behavior of userland and internal functions.
    • In particular when internal functions fail to parse argument types correctly they fail by returning null. Userland functions throw a TypeError.
  • Merge symbol tables:
  • Extend instanceof to work with non-classes and add new functions for checking type and subtype relationships e.g. ($int instanceof int) is_type_of(1, 'int') is_subtype_of('array', 'iterable').
  • Unify class and abstract type error behaviors when method incompatibilities exists; see https://3v4l.org/hamQi
  • Remove always true return when isn't helpful for some functions and methods; see #75958.

Here are some feature ideas:

  • covariant-returns-and-contravariant-parameters Add parameter contravariance and return type covariance. This will probably change when autoloads are triggered. Additionally we probably want to reserve new types related to variance such as mixed. New types in the global namespace are technically reserved already but in practice it would have a small BC impact.
  • JIT (link?)
  • FFI (link?)
rfc/php8.txt · Last modified: 2018/08/12 00:16 by carusogabriel