array( "-6ren">
gpt4 book ai didi

php - 在内部表示配置选项的最佳方式是什么?

转载 作者:可可西里 更新时间:2023-10-31 22:49:48 25 4
gpt4 key购买 nike

因此,我正在研究多种存储配置数据的方法。我相信我已经将其缩小为 3 种方式:

只是一个简单的变量

$config = array(
"database" => array(
"host" => "localhost",
"user" => "root",
"pass" => "",
"database" => "test"
)
);

echo $config['database']['host'];

我认为这太易变了,因为配置选项不应该被更改。

修改后的标准类

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'];

基本上,它所做的就是将上面的数组封装成一个对象,并保证这个对象是不可更改的。

或者静态类

 class AppConfig{
public static function getDatabaseInfo()
{
return array(
"host" => "localhost",
"user" => "root",
"pass" => "",
"database" => "test"
);
}
// .. etc ...
}

$config = AppConfig::getDatabaseInfo();
echo $config['host'];

这提供了最终的不变性,但这也意味着每当我想更改数据时,我都必须进入并手动编辑类。

您认为以上哪项最适合存储配置选项?或者有更好的方法吗?

最佳答案

在这 3 个选项中,静态方法可能是最好的。

不过,实际上,“最好的”最终是关于您使用起来最简单和最一致的东西。如果您的应用程序的其余部分未使用任何 OO 代码,那么您不妨选择选项 #1。如果您最终想要编写一个完整的数据库抽象层,请选择 #2。

在不知道更多关于您的目标是什么以及您的应用程序的其余部分是什么样子的情况下,这有点像问某人最好的机动车是什么 - 根据您是否正在寻找运动,答案会有所不同汽车、货车或摩托车。

关于php - 在内部表示配置选项的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2036140/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com