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:
instanceofto work with non-classes and add new functions for checking type and subtype relationships e.g.
($int instanceof int)
- Unify class and abstract type error behaviors when method incompatibilities exists; see https://3v4l.org/hamQi
- Remove always
truereturn 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?)