Skip to content
Switch branches/tags
Go to file
Cannot retrieve contributors at this time


There are some notes on PHP RFCs, why some were declined, and what others might need for them to be implemented.

The purpose of these documents is to avoid information from being lost and to try to avoid conversations needing to be repeated multiple times on PHP internals.

Things still being discussed

Array key casting

Better web sapi

Call site error or exception control

Class scoping improvements

Chained comparison operators

Consistent callables


Method overloading

Out parameters

Standardise core library

Strict mode and internal engine callbacks

Strings/encoding is terrible

Strong typing


Template string literals

Throws declarations

Typedef callable signatures


These need to be summarised.

Pipe-operator -

Tuple returns - though these would be moot if we had out parameters.

Type declarations type number = float | int;

Ideas that overcame their challenges

PHP is actually getting better. These are all things that used to be pipe-dreams, but are now in PHP core.


Briefer closure syntax

Co- and contra-variance

Enums implemented by Enumerations.

Immutables - this is done through the Readonly properties. There is still some work to do here, as currently it is slightly annoying to clone an object and during the clone change some of it's properties.

Named params

Null short-circuiting -

Referencing functions - implemented by First-class callable syntax

Ternary right associative

Union types

Things that are probably moot

PHP is actually getting better, but that means that some solutions to problems have become pretty moot, as they seek to solve problems that are now less of a problem.

Explicit defaults

Misc notes

SPL notes


Please read the contributing guidelines before writing your 4,000 word novelella on why some RFC really should pass.


I reserve the right to be as opinionated as I feel like when commenting on RFCs; I'm not going to attempt to stay 100% neutral when talking about RFCs that I consider to be either dumb or bad for PHP.