Matti Mäkitalo: Verschachtelte Klassen

Beitrag lesen

Hi,

Mein Problem ist, dass ich einfach ein paar verschachtelte Klassen haben will.

Klassendefinitionen lassen sich in PHP nicht verschachteln, aber das möchtest du vermutlich auch garnicht ausdrücken. Du möchtest eine einfach ein paar hierarchische Daten in einer Variablen zusammenfassen. Als Datenstruktur bietet sich dafür eine verschachtelte Hashmap an und in PHP benutzt man dafür Arrays.

Das (Anti-)Pattern, das du hier verwendest, nennt man auch Primitive Obsession: die falsche Verwendung einer Hashmap, anstatt die Daten korrekt durch Klassen abzubilden.

Es wäre vermutlich deutlich lesbarer, die Daten korrekt abzubilden: eine Klasse Config\MysqlConfiguration, eine Klasse Config\AdminConfiguration, eine Klasse Config. Die Klasse Config hat dann eine Property der jeweiligen Unterkonfigurationen.

Die Struktur der Daten bleibt dann im Wesentlichen gleich (die Daten sind immer noch als Baum abgelegt). Du gewinnst allerdings eine gewisse Typsicherheit, kannst Methoden auf den Config-Objekten definieren usw. Diese Lösung ist (was RAM angeht) auch nicht teurer als die Hash-Lösung, nur ein wenig mehr tippen muss man.

Bis die Tage,
Matti