Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
нахрена оператор fn перед стрелочной функцией
$array = [ $a => $a + $b, $x => $x * $y, ];
Это массив arrow functions или map?
yield $foo => $bar;Это key-value yield или arrow function yield?
Понятно, что можно ввести приоритеты и расставить скобочки — но это усложнение языка и способ наделать ошибок на пустом месте.
Я, если что, был за \($x) => ..., как в Haskell. Но с fn тоже неплохо.
А если мне надо мапу вида ($a + $x) * $y => $a + $b? :-)
Понятно, что реализуемо, но слишком замороченно, не надо из PHP делать C++.
$array = [
($a => $a + $b),
($x => $x * $y),
];
// то же, с yield:
yield ($foo => $bar);
$posts->map(fn())Шёл 2019 год. В PHP добавили короткие лямбды.
Ни в коем случае не умаляю работы над языком, но запоздание фичи довольно-таки велико.
class Post {
private $title;
fn getTitle() => $this->title;
}
class Post {
private $title { get; protected set; }
}
Раньше нужно было писать так:
$ids = array_map(function ($post) { return $post->id; }, $posts);
array_column($collection, $property)
$vat = 0.2;
$total = array_sum(
array_map(
function (Order $order) use ($vat) {
return $order->price + $order->price * $vat;
},
$orders
)
);
$vat = 0.2;
$total = array_sum(
array_map(
fn (Order $order): float => $order->price + $order->price * $vat,
$orders
)
);
$order->price + $order->price * $vat;$order->getPriceWithTaxes();function getPriceWithTaxes(float $price, float $taxes): float;<?php
echo preg_replace_callback('~-([a-z])~', function ($match) {
return strtoupper($match[1]);
}, 'hello-world');
// outputs helloWorld
?>
<?php
echo preg_replace_callback('~-([a-z])~', fn ($match) => strtoupper($match[1]), 'hello-world');
// outputs helloWorld
?>
Стрелочные функции в PHP 7.4