Hi,
In PHP funktioniert das überhaupt nicht, weil PHP dynamisch typisiert ist[...]
Eine gewisse Menge an Typisierung kann man aber durch Type-Hints reinbringen.
public function __construct(AdminConfiguration $admin, MySqlConfiguration $mysql ) {
$this->admin = $admin;
$this->mysql = $mysql;
}
}
Code wird sehr viel öfter gelesen als geschrieben und ich persönlich lese lieber prägnanten als aufgedunsenen Code.
Was du leider vergisst: wenn dein Konfigurations-Hash rumgereicht wird an Orte, die weit weg sind von dem Ort, wo er definiert ist, musst du immer nachschauen, wie deine Keys heißen, wie die genaue Struktur aussieht usw. Auch ist die Lösung fehleranfällig, z.B. gegenüber Tippfehlern bei Keys. Bei der Klassenlösung steht es im Vertrag der Klasse und niemand (korrekte Sichtbarkeit der Attribute vorausgesetzt) kann dagegen verstossen.
Eine allgemeingültige Lösung für die Frage "statische/dynamische Typisierung" gibt es IMHO nicht. Bei großen, komplexen Systemen mit vielen Entwicklern kann statische Typisierung (auch in Verbindung mit DDD) viele Vorteile bringen. Und gleichzeitig kann es zu viel Boilerplate in kleinen Projekten führen, bei denen man die Komplexität nicht braucht.
Bis die Tage,
Matti