Ich suche also nach einer Reihe von Möglichkeiten, meine Konfigurationsdaten zu speichern. Ich glaube, ich habe es auf 3 Möglichkeiten eingegrenzt:
Nur eine einfache Variable
$config = array(
"database" => array(
"host" => "localhost",
"user" => "root",
"pass" => "",
"database" => "test"
)
);
echo $config['database']['host'];
Ich denke, dass dies einfach zu veränderlich ist, während die Konfigurationsoptionen nicht geändert werden können sollten.
Eine modifizierte Standardklasse
class stdDataClass {
// Holds the Data in a Private Array, so it cannot be changed afterwards.
private $data = array();
public function __construct($data)
{
// ......
$this->data = $data;
// .....
}
// Returns the Requested Key
public function __get($key)
{
return $this->data[$key];
}
// Throws an Error as you cannot change the data.
public function __set($key, $value)
{
throw new Exception("Tried to Set Static Variable");
}
}
$config = new stdStaticClass($config_options);
echo $config->database['host'];
Im Grunde kapselt es das obige Array in ein Objekt ein und sorgt dafür, dass das Objekt nicht verändert werden kann.
Oder eine statische Klasse
class AppConfig{
public static function getDatabaseInfo()
{
return array(
"host" => "localhost",
"user" => "root",
"pass" => "",
"database" => "test"
);
}
// .. etc ...
}
$config = AppConfig::getDatabaseInfo();
echo $config['host'];
Dies bietet die ultimative Unveränderlichkeit, aber es bedeutet auch, dass ich die Klasse manuell bearbeiten müsste, wenn ich die Daten ändern wollte.
Welche der oben genannten Optionen sollten Ihrer Meinung nach am besten für die Speicherung von Konfigurationsoptionen verwendet werden? Oder gibt es einen besseren Weg?