Bound-Erased Generic Types

This RFC adds generic type syntax to PHP. Classes, interfaces, traits, functions, methods, closures, and arrow functions can declare type parameters; those parameters carry bounds, defaults, and variance markers; type arguments may be supplied at use sites and at call sites via turbofish.

final readonly class Pair<+L, +R> {
    public function __construct(
        public L $left,
        public R $right,
    ) {}
 
    public function swap(): Pair<R, L> {
        return new Pair($this->right, $this->left);
    }
}
 
final readonly class Box<+T> {
    public function __construct(
        public T $value,
    ) {}
 
    public function map<U>(callable $fn): Box<U> {
        return new Box(($fn)($this->value));
    }
 
    public function zip<O>(O $value): Box<Pair<T, O>> {
        return new Box(new Pair($this->value, $value));
    }
}
 
function identity<T>(T $value): T {
    return $value;
}
 
$greeting = new Box::<string>("hello, world");
$paired   = $greeting->zip::<int>(42);
$swapped  = $paired->value->swap();
$result   = identity::<Pair<int, string>>($swapped);
Click the bar to cast your vote!
98%
2%
12

I've been writing about this for years. If we ever want generics in PHP, this is the way.

Share:
Contributor brent avatar
brent
voted yes
7

I don't often use generic definitions in docblocks today, but when I do, it's a mess. I think this RFC is the right move at the right time, and cost (both runtime and syntax) appears zero to minimal at best. It'd be really great to see generics land in PHP. It's been a long time coming.

Share:
mikerockett avatar
mikerockett
voted yes
5

Generics are one of the most requested feature since PHP met the OOP paradigm and for me, this will step to set the boundaries to its OOP complete adherence.

We will be able to describe complex classes or dynamically typed ones, increase readability and move type hinting away from comments.

Share:
rinodrummer-2 avatar
rinodrummer-2
voted yes
1

This should be native to the language.

Share:
harrald avatar
harrald
voted yes
1

Along with the host of all previously mentioned advantages, I find that this could open the door for much more in-depth compiler analysis leading to better performance in the future!

Share:
wilaak avatar
wilaak
voted yes
1

Generics and Async are two of the fundamental pillars of modern PHP, and we need to achieve them.

Share:
alexsayhello avatar
alexsayhello
voted yes
1

finally, please let it pass

Share:
pavel avatar
pavel
voted yes
1
Share:
michaelpavlista avatar
michaelpavlista
voted yes
1

I'm more in the doubting camp, but there is only YES or NO vote available.

I'm really concerned about the cognitive load while reading the code, it adds complexity, PHP's selling point was its simplicity, features like Aviz, and other make it harder and harder to read and understand quickly.

So, be careful what you wish for)

Share:
erol-eukles avatar
erol-eukles
voted no
1

If you like it or not, generics are already used in the wild. Having a standardized syntax is, in my opinion, a no-brainer.

This RFC chooses its scope carefully, providing some safety where it is easy to do so, while delegating the rest to static analyzers and keeping backwards compatibility. With this, the different static analyzers can finally agree on certain behaviors, because they are part of the language.

Having the generic type information available through reflection opens up exciting new possibilities.

Keeping the doors open for future expansion is another very important win.

TL;DR: The RFC is very pragmatic given the design of PHP. Provides very solid foundation upon which to build that was missing and asked for a decade.

Share:
dtokos avatar
dtokos
voted yes
1

This would easily be one of the best features of modern PHP. Nobrainer.

Share:
xheaven avatar
xheaven
voted yes
1

Looking forward to this feature landing in PHP 8.6.

Share:
ahaneef29 avatar
ahaneef29
voted yes
1

Long awaited.

Share:
liu avatar
liu
voted yes
1

Yes please! This would remove a lot of docblocks everywhere. Huge PHPStan user here.

Share:
mnapoli avatar
mnapoli
voted yes
1
Share:
robindumontchaponet avatar
robindumontchapone...
voted yes

Check out another RFCs

Interface Default Methods

Interface Default Methods improves backwards compatibility when changing interfaces, but also add a way to have multi-inheritance in PHP.

95
168 yes
264 no
Property Hooks

A new way of interacting with properties

70
142 yes
90 no
Short Closures 2.0

This RFC proposes a way to have multi-line short closures — closures that don't need explicit use statements, but can still have multiple lines and a return statement.

101
373 yes
66 no
RSS Feed Contribute Watch on YouTube Our License
© 2026 RFC Vote. This project is open source. Contribute and collaborate with us!