Funktionale Programmierung in PHP: Von den Grundlagen zur Praxis

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
```html

Funktionale Programmierung in PHP: Ein moderner Ansatz zum Schreiben von Code

PHP wird traditionell mit imperativen und objektorientierten Programmierstilen assoziiert. Mit den Versionen 7.4, 8.0 und 8.1 erhielt die Sprache jedoch leistungsstarke Werkzeuge für die funktionale Programmierung (FP). Dieser paradigmatische Ansatz ermöglicht es, vorhersagbareren, testbareren und prägnanteren Code zu schreiben, insbesondere bei der Arbeit mit Arrays, Collections und asynchronen Aufgaben. In diesem Artikel werden wir die wichtigsten Konzepte der FP in PHP erläutern und zeigen, wie man sie in der Praxis anwendet.



1. Grundlagen der funktionalen Programmierung in PHP

Funktionale Programmierung basiert auf mehreren grundlegenden Prinzipien:

  • Reine Funktionen — das Ergebnis hängt nur von den Argumenten ab, ohne Nebenwirkungen.
  • Unveränderlichkeit (Immutability) — Daten werden nicht verändert, sondern es werden neue Kopien erstellt.
  • Funktionen höherer Ordnung — Funktionen, die andere Funktionen als Argumente akzeptieren oder zurückgeben.
  • Rekursion — Ersetzung von Schleifen durch Selbstaufrufe der Funktion.

PHP unterstützt diese Konzepte dank anonymer Funktionen (Closures), Pfeilfunktionen (Arrow Functions) (seit PHP 7.4) und integrierter Funktionen zur Array-Verarbeitung.



// Beispiel einer reinen Funktionfunction add(int $a, int $b): int {    return $a + $b;}

// Beispiel einer anonymen Funktion (Closure)$multiply = function(int $x, int $y): int { return $x * $y;};

echo $multiply(3, 4); // 12

Wichtig: Reine Funktionen in PHP sollten keine globalen Variablen verändern oder Ein-/Ausgabe durchführen (z. B. echo). Dies gewährleistet Vorhersagbarkeit und vereinfacht das Debugging.



2. Anonyme Funktionen, Closures und Pfeilfunktionen

Anonyme Funktionen (Closures) sind Funktionen ohne Namen, die als Argumente übergeben oder Variablen zugewiesen werden können. Sie können Variablen aus dem äußeren Gültigkeitsbereich mit dem Schlüsselwort use einfangen.



$factor = 2;$double = function(int $value) use ($factor): int {    return $value * $factor;};

echo $double(5); // 10

Seit PHP 7.4 gibt es Pfeilfunktionen (Arrow Functions) — eine kürzere Syntax für einzeilige Closures. Sie fangen Variablen automatisch aus dem Gültigkeitsbereich ein.



$factor = 2;$double = fn(int $value): int => $value * $factor;

echo $double(5); // 10

Wann verwenden: Pfeilfunktionen sind ideal für einfache Transformationen (z. B. in array_map), während klassische Closures für komplexe Logik mit mehreren Anweisungen geeignet sind.



3. Funktionen höherer Ordnung: map, filter, reduce

In PHP werden für die Arbeit mit Arrays im funktionalen Stil integrierte Funktionen verwendet:

  • array_map() — wendet eine Funktion auf jedes Element eines Arrays an.
  • array_filter() — filtert ein Array nach einer Bedingung.
  • array_reduce() — reduziert ein Array auf einen einzigen Wert.


$numbers = [1, 2, 3, 4, 5, 6];

// map: jedes Element verdoppeln$doubled = array_map(fn($n) => $n * 2, $numbers);print_r($doubled); // [2, 4, 6, 8, 10, 12]

// filter: nur gerade Zahlen behalten$even = array_filter($numbers, fn($n) => $n % 2 === 0);print_r(array_values($even)); // [2, 4, 6]

// reduce: Summe aller Elemente$sum = array_reduce($numbers, fn($carry, $n) => $carry + $n, 0);echo $sum; // 21

Tipp: Verwenden Sie array_values() nach array_filter(), um die Array-Schlüssel zurückzusetzen, da diese sonst inkonsistent sein können.



Diese Funktionen ermöglichen es, foreach-Schleifen durch deklarative Aufrufketten zu ersetzen, was den Code lesbarer und weniger fehleranfällig macht.

```

Blogs

Buchempfehlungen