Yani, benim yapılandırma verilerini saklamak için yollar bir dizi arıyorum. Ben 3 şekilde aşağı daralmış ettik inanıyorum:
Sadece basit bir değişken
$config = array(
"database" => array(
"host" => "localhost",
"user" => "root",
"pass" => "",
"database" => "test"
)
);
echo $config['database']['host'];
Bu yapılandırma seçenekleri değiştirilmesi mümkün olmamalıdır nereye kadar, sadece çok değişken olduğunu düşünüyorum.
Bir Modifiye Standart Sınıf
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'];
Temelde, yaptığı her bir nesnenin içine yukarıdaki dizi kapsüller, ve nesne değiştirilemez emin kılar.
Ya da bir Statik Sınıfı
class AppConfig{
public static function getDatabaseInfo()
{
return array(
"host" => "localhost",
"user" => "root",
"pass" => "",
"database" => "test"
);
}
// .. etc ...
}
$config = AppConfig::getDatabaseInfo();
echo $config['host'];
Bu nihai değişmezliğini sağlar, ama aynı zamanda ben de gidip elle ben verileri değiştirmek istediği zaman sınıfını düzenlemek zorunda demektir.
Yukarıdaki hangi yapılandırma seçenekleri saklamak için iyi olacağını düşünüyorsunuz? Ya da daha iyi bir yolu var mı?