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);
}
}
Aucun commentaire pour le moment.