Développement

Programmation fonctionnelle en PHP — Au-delà des arrow functions

Programmation fonctionnelle en PHP

PHP n'est pas un langage purement fonctionnel, mais il a adopté de nombreux concepts qui peuvent rendre votre code plus déclaratif et lisible.

Collections Laravel

Les collections sont le meilleur exemple de programmation fonctionnelle en Laravel.

// ❌ Impératif
$published = [];
foreach ($articles as $article) {
    if ($article->published) {
        $published[] = $article;
    }
}

// ✓ Déclaratif
$published = collect($articles)->where('published', true);

Chaînage de méthodes

$topCommenters = User::all()
    ->flatMap(fn($user) => $user->comments)
    ->groupBy('user_id')
    ->map(fn($comments) => $comments->count())
    ->sortDesc()
    ->take(10);

Arrow Functions (PHP 7.4+)

// Syntaxe courte pour les fonctions anonymes
$numbers = [1, 2, 3, 4];
$doubled = array_map(fn($n) => $n * 2, $numbers);

Le pipe

Le pipe permet de passer une valeur à travers une série de fonctions.

use Illuminate\Support\Facades\Pipeline;

$result = Pipeline::send($request)
    ->through([
        Authenticate::class,
        ValidateRequest::class,
        ProcessInput::class,
    ])
    ->then(function ($processedRequest) {
        return response()->json($processedRequest);
    });

Immutabilité

Bien que PHP ne l'impose pas, viser l'immutabilité est un principe clé.

// ✓ Préférer la création de nouvelles instances
class Money {
    public function __construct(private int $amount) {}

    public function add(Money $other): Money {
        return new Money($this->amount + $other->amount);
    }
}

// Commentaires (0)

Connectez-vous pour laisser un commentaire.

Aucun commentaire pour le moment.