© Ico Maker/Shutterstock.com
Funktionales Programmieren mit PHP

Elegant zum Ziel gelangen!


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 auseinander gesetzt 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 (Listing 1). 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!

Listing 1: Flexibles System für die Datenstruktur anlegen

class Person { public $firstname; public $lastname; //… hier können später weitere Felder folgen function __construct(string $first, string $last) { $this->firstname = $first; $this->lastname = $last; } function __toString() { return $this->firstname.' '.$this->lastname; } } class PersonList { private $_myList = array(); function add(Person $person) { $this->_myList[] = $person; } function show() { foreach($this->_myList as $person) echo $person.'<br>'; } } $population = new PersonList; $population->add( new Person('Micky' , 'Maus') ); $population->add( new Person('Donald', 'Duck') ); $population->add( new Person('Goofy') ); $population->show()...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang