Hakuna matata!
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.
Das Gegenteil ist für mich der Fall, durch das Verpacken in Klassen führt man sehr viel Boilerplate-Code ein, der mich persönlich nur von der eigentlichen Problemstellng ablenkt. Zum Vergleich:
class AdminConfiguration {
public $password;
}
class MySqlConfigration {
public $database;
public $user;
public $password;
}
class Configration {
public $admin;
public $mysql;
public function __construct( $admin, $mysql ) {
$this->admin = $admin;
$this->mysql = $mysql;
}
}
$admin = new AdminConfiguration();
$admin->password = 'password';
$mysql = new MySQLConfiguration();
$mysql->database = 'database';
$mysql->user = 'user';
$mysql->password = 'password';
$config = new Configuration( $admin, $mysql );
Die Struktur der Daten bleibt dann im Wesentlichen gleich (die Daten sind immer noch als Baum abgelegt). Du gewinnst allerdings eine gewisse Typsicherheit
Der große Vorteil von Typsicherheit ist, dass man Typfehler sehr früh erkennen kann. Das funktioniert in statisch typisierten Sprachen super gut, weil man da Typfehler schon zur Compilerzeit ermitteln kan. In PHP funktioniert das überhaupt nicht, weil PHP dynamisch typisiert ist, die Typen werden also erst zur Laufzeit bekannt und folglich können auch Typfehler erst zur Laufzeit aufgelöst werden. Das macht das Argument für mich hinfällig.
Und ganz davon abgesehen, halte ich Typsicherheit ohnehin für überbewertet. Eric Elliott spiegelt meine Meinung darüber sehr gut wieder.
Diese Lösung ist (was RAM angeht) auch nicht teurer als die Hash-Lösung, nur ein wenig mehr tippen muss man.
Über Speicherbedarf möchte ich mich gar nicht streiten. Über die Tipparbeit kann ich auch hinwegsehen, aber Code wird sehr viel öfter gelesen als geschrieben und ich persönlich lese lieber prägnanten als aufgedunsenen Code.
“When I see a bird that walks like a duck and swims like a duck and quacks like a duck, I call that bird a duck.”
– James Whitcomb Riley
“All right, then, I'll go to hell.” – Huck Finn