Arrow functions let you write a one-line closure with fn() =>, but named functions and class methods can't do the same. They always need curly braces and a return statement. This RFC from Dmitrii Derepko proposed a short form for any function or method whose body just returns one expression. It was declined.
The RFC points to the many small getters, setters and proxy methods found in DTOs, models and value objects, where several lines of code exist to hold a single return.
How it would have worked
You'd put => and the expression where the body normally goes:
// Short syntax function add(int $a, int $b): int => $a + $b; // Same as function add(int $a, int $b): int { return $a + $b; }
It works in classes too:
class Proxy { private $decorated; public function doA() => $this->decorated->doA(); public function doB() => $this->decorated->doB(); }
This is purely syntactic sugar. The parser turns the short form into the normal form right away, so nothing changes at runtime. Unlike fn, it doesn't capture variables from the outer scope. A regular function can't see them, and neither could the short form.
What it means for existing code
Nothing would have broken. The syntax is a parse error today, so no working code uses it, and there's no change to opcache or how PHP executes code.
The vote
Declined. Voting closed on July 30, 2025 with 6 in favor and 18 against. It needed a two-thirds majority.