Funktionale Programmierung in PHP: Von A bis Z – Das vollständige Handbuch

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Einführung in die funktionale Programmierung in PHP



Funktionale Programmierung (FP) ist ein Paradigma, bei dem Berechnungen als Auswertung mathematischer Funktionen betrachtet werden, wobei Zustandsänderungen und veränderliche Daten vermieden werden. Obwohl PHP ursprünglich als imperative Sprache entwickelt wurde, wurden ab Version 5.3 (2009) leistungsstarke Werkzeuge für den funktionalen Stil hinzugefügt: anonyme Funktionen, Closures, Unterstützung für Funktionen höherer Ordnung und vieles mehr.



In diesem Artikel behandeln wir alle wichtigen Konzepte der funktionalen Programmierung in PHP – von grundlegenden anonymen Funktionen bis hin zu fortgeschrittenen Techniken wie Currying und Funktionskomposition. Sie erfahren, wie Sie saubereren, vorhersagbareren und testbareren Code schreiben.



1. Anonyme Funktionen und Closures



Anonyme Funktionen



Eine anonyme Funktion (Lambda) ist eine Funktion ohne Namen. Sie kann einer Variablen zugewiesen, als Argument übergeben oder von einer anderen Funktion zurückgegeben werden.



<?php// Normale anonyme Funktion$square = function($n) {    return $n * $n;};

echo $square(5); // 25

// Anonyme Funktion als Callback für array_map$numbers = [1, 2, 3, 4];$squared = array_map(function($n) { return $n * $n;}, $numbers);

print_r($squared); // [1, 4, 9, 16]?>


Closures



Ein Closure ist eine anonyme Funktion, die mit dem Schlüsselwort use Variablen aus dem äußeren Gültigkeitsbereich erfassen kann. Dies ist eine der leistungsstärksten FP-Funktionen in PHP.



<?php$multiplier = 3;

$multiply = function($n) use ($multiplier) { return $n * $multiplier;};

echo $multiply(10); // 30

// Veränderliche Variable (als Referenz übergeben)$counter = 0;$increment = function() use (&$counter) { $counter++;};

$increment();$increment();echo $counter; // 2?>


2. Reine Funktionen und Unveränderlichkeit von Daten



Reine Funktionen



Eine reine Funktion ist eine Funktion, die:

  • Für dieselben Argumente immer dasselbe Ergebnis zurückgibt (deterministisch)
  • Keine Seiteneffekte hat (keine externen Variablen ändert, keine Daten ausgibt, nicht mit der Datenbank arbeitet)


<?php// KEINE reine Funktion (abhängig von globaler Variable)$taxRate = 0.2;function calculatePriceDirty($price) {    global $taxRate;    return $price * (1 + $taxRate);}

// Reine Funktionfunction calculatePricePure($price, $taxRate) { return $price * (1 + $taxRate);}

echo calculatePricePure(100, 0.2); // 120 – immer vorhersagbar?>


Unveränderlichkeit (Immutability)



In der FP ist es üblich, vorhandene Daten nicht zu ändern, sondern neue zu erstellen. In PHP können Sie dazu unveränderliche Objekte verwenden oder einfach neue Arrays zurückgeben.



<?php// Schlecht: Änderung des ursprünglichen Arrays$numbers = [1, 2, 3];array_push($numbers, 4); // Mutation

// Gut: Erstellen eines neuen Arrays$numbers = [1, 2, 3];$newNumbers = array_merge($numbers, [4]);

// Funktion, die ein neues Array zurückgibtfunction addItem(array $arr, $item): array { $result = $arr; $result[] = $item; return $result;}

$original = [1, 2];$updated = addItem($original, 3);print_r($original); // [1, 2] – Original unverändertprint_r($updated); // [1, 2, 3]?>


3. Funktionen höherer Ordnung: array_map, array_filter, array_reduce



Funktionen höherer Ordnung sind Funktionen, die andere Funktionen als Argumente akzeptieren oder zurückgeben. PHP bietet drei wichtige integrierte Funktionen für die Arbeit mit Arrays im funktionalen Stil.



array_map – Transformation von Elementen



<?php$users = [    ['name' => 'Alice', 'age' => 25],    ['name' => 'Bob', 'age' => 30],];

// Nur Namen extrahieren$names = array_map(function($user) { return $user['name'];}, $users);

print_r(

Blogs

Buchempfehlungen