PHP đã thông qua Short Arrow Functions RFC (hàm mũi tên)

PHP team đã thông qua đề xuất Sort Arrow Functions (hàm mũi tên, hàm rút gọn) được đề nghị bởi Nikita Popov, Levi Morrison, v Bob Weinand.

Đây là ví dự về cách sử dụng của PHP Short Arrow Functions trong đề xuất này:






 

$extended = function ($c) use ($callable, $factory) {
    return $callable($factory($c), $c);
};
 
// with arrow function:
$extended = fn($c) => $callable($factory($c), $c);

Một ví dụ về cách sử dụng arrow function trong Laravel:

// Current
$users->map(function($user) {
    return $user->first_name . ' ' . $user->last_name;
});

// with arrow function:
$users->map(
    fn($user) => $user->first_name . ' ' . $user->last_name
);

PHP arrow function dự kiến sẽ được thêm vào ở phiên bản PHP v7.4 bạn có thể xem thêm thông tin về arrow function tại PHP wiki hoặc nghe PHP Podcast.

Một vài ví dụ khác khi áp dụng PHP Short Arrow Functions:

Ví dụ được lấy từ Doctrine DBAL:

$this->existingSchemaPaths = array_filter($paths, function ($v) use ($names) {
    return in_array($v, $names);
});
 
// with arrow function
$this->existingSchemaPaths = array_filter($paths, fn($v) => in_array($v, $names));

Hoặc function complement được tìm thấy trong nhiều thư viện PHP:

function complement(callable $f) {
    return function (...$args) use ($f) {
        return !$f(...$args);
    };
}
 
// with arrow function:
function complement(callable $f) {
    return fn(...$args) => !$f(...$args);
}

Mình thực sự rất thích sử dụng arrow function trong javascript vì sự ngắn gọn và đẹp đẽ của nó, mình rất ủng hộ khi RFC này được thông qua, còn bạn thì sao?