目前,我将一些设置存储在数据库表中。它包含2个字段(setting_name,setting_value)。
现在,我的所有模型都需要访问这些设置(例如,有一个设置可以决定查询应该以最大值返回多少条记录),但我不确定如何使用良好的OO实践来实现它。有没有可接受/好的方法(所以所有模型都可以访问配置设置)?
另外,我应该缓存这些设置(检索它们实际上每页面加载只有1个查询),因为有些人似乎推荐这个吗?
由于
答案 0 :(得分:2)
我通过我的依赖注入容器a.k.a.服务容器来处理这个问题。初始化容器时,我只是简单地执行查询并在所有配置设置中创建一个关联数组(实际上,ArrayObject)。然后我在服务容器中将此数组注册为服务。这样,我的整个应用程序都可以轻松访问配置:
$config = $this->container->get('configuration');
do_something($config['bar']);
答案 1 :(得分:1)
此问题的解决方案是Singleton模式。
您应该有一个带有静态方法的实例类来获取配置值:
Config::getConfigData($conf_key)
缓存: 这取决于您在数据库中有多少配置数据。我建议缓存这些,而不是每次需要一个值时执行查询。