Leseproben
Thomas Schröter Freiberufler

„Funktionales Programmieren eignet sich nicht nur um mit Datenstrukturen im Arbeitsspeicher zu hantieren, auch sogenannte Push-Requests mit (relationalen) Datenbanken lassen sich funktional elegant formulieren.“

Funktionales Programmieren ist im Trend. Viele Programmiersprachen bieten mittlerweile eine gute Unterstützung, um Code funktional zu entwickeln. Auch PHP enthält Mechanismen zur funktionalen Programmierung. Leider bleiben dabei oft andere Paradigmen, wie zum Beispiel gute Lesbarkeit oder gutes Verständnis des Codes, auf der Strecke; aber das muss nicht sein!

Produktmanagerin Anna hat den Auftrag für ein neues Projekt. Nachdem sie sich einige Tage gedanklich damit auseinandergesetzt hat, beauftragt sie Entwickler Bernd, erste Entwürfe und Vorschläge zu erarbeiten. Benötigt wird zunächst ein möglichst flexibles System, um personenbezogene Daten zu erfassen, mehrere Datensätze in einer Liste zu speichern und diese nach unterschiedlichen Kriterien filtern beziehungsweise durchsuchen zu können. Da der Auftraggeber die endgültigen Spezifikationen noch nicht abschließend festlegen kann, sind Änderungen jederzeit möglich.

Bernd, ein erfahrener und pragmatischer Entwickler, kennt diese Form von Auftrag natürlich und beginnt zunächst, sich grundlegende Gedanken zu dem gestellten Problem zu machen. Also: zuerst wird eine Datenstruktur benötigt, die eine Person spezifiziert, und in einem nächsten Schritt eine Liste, die eine beliebige Anzahl solcher Personen speichern kann. Dabei sollen aber auch Mechanismen vorgesehen sein, um in der Liste nach Personen suchen zu können, die bestimmte Kriterien erfüllen. So weit, so einfach, denkt Bernd und füllt seinen Codeeditor. Die Deklaration der Datenfelder als public in der Klasse Person kann grundsätzlich als kritisch gesehen werden, da hier eine Unveränderlichkeit nach Erzeugen einer Instanz nicht gegeben ist. Dies soll im weiteren Verlauf toleriert werden, da es für die gegebenen Beispiele nicht relevant ist!

Nachdem Bernd den Programmcode fertig eingegeben hat und ausprobieren möchte, gibt es prompt eine Fehlermeldung im Browser. „Ist ja logisch!“, denkt Bernd, denn er hat beim Erzeugen der Instanz für Goofy keinen Nachnamen angegeben, was PHP natürlich mit einem Fehler quittiert. Was könnte Bernd tun, um diesen Fehler in Zukunft zu vermeiden?

Das Parameterdilemma

Der Konstruktor einer Klasse ist in PHP als eine spezielle Klassenmethode, function __construct([Parameterliste]), definiert. Im Gegensatz zu anderen Programmiersprachen erlaubt PHP das Überladen von Funktionen leider nicht. Es ist also nicht möglich, mehrere Funktionen mit gleichem Namen aber unterschiedlichen Parametern zu deklarieren. PHP erlaubt, Funktionsparameter mit Vorgabewerten zu belegen, wobei dabei die Reihenfolge strikt eingehalten werden muss. Der Versuch, eine Funktion mit mal mit einem, zwei oder auch beliebigen Parametern aufzurufen, ist zwar via variabler Parameterliste möglich, erfordert aber zusätzliche Logik zur korrekten Behandlung der Parameter.

Den vollständigen Artikel lesen Sie in der Ausgabe:

PHP Magazin 2.19 - "Docker: Wie sicher ist Docker?"

Alle Infos zum Heft
579871621PHP: Code funktional entwickeln
X
- Gib Deinen Standort ein -
- or -