https://wiki.php.net/rfc/arrow_functions_v2
Никита Попов продолжает бить по проблемным местам PHP! В своем свежем RFC он замахнулся на стрелочные функции, они же короткие лямбды. У этой идеи в PHP сложная история, было как минимум две попытки (1, 2) их реализовать и обе провалились. В основном упираясь в синтаксис.
Уже рассматривались варианты:
$x ~> $x * 2Собственно половина документа, который опубликовал Никита, посвящена выбору синтаксиса.
function($x) => $x + $y
^($x) => $x + $y
Предложен следующий вариант:
fn($x, $y) => $x * $yПри этом переменные из внешнего скоупа биндятся по значению автоматически и не надо использовать use(), то есть можно вот так:
$y = 1;
$fn1 = fn($x) => $x + $y;
А если надо по ссылке, то придется либо явно перечислять переменные по ссылке, либо использовать переключатель:
$fn = fn() use(&) {
// ...
}
Также можно будет объявлять и методы в виде короткого синтаксиса:class Test {
private $foo;
fn getFoo() => $this->foo;
}
Надеюсь, на этот раз предложение преодолеет порог голосования и будет принято.