【问题标题】:Model of settings in a configuration table配置表中的设置模型
【发布时间】:2011-10-05 08:11:54
【问题描述】:

目前,我将一些设置存储在数据库表中。它包含 2 个字段(setting_name、setting_value)。

现在,我的所有模型都需要访问这些设置(例如,有一个设置决定了一个查询应该返回最多多少条记录),但我不确定如何通过良好的 OO 实践来实现它。是否有一种可接受/好的方式来执行此操作(因此所有模型都可以访问配置设置)?

另外,我是否应该像某些人推荐的那样缓存这些设置(检索它们实际上只是每次页面加载 1 个查询)?

谢谢

【问题讨论】:

    标签: php oop design-patterns


    【解决方案1】:

    我通过我的依赖注入容器又名服务容器来处理这个问题。初始化容器后,我只需执行查询并从所有配置设置中创建一个关联数组(实际上是 ArrayObject)。然后我将此数组注册为我的服务容器中的服务。这样,我的整个应用程序就可以像这样轻松访问配置:

    $config = $this->container->get('configuration');
    do_something($config['bar']);
    

    【讨论】:

    • 根据另一个帖子,这样的服务容器也很糟糕:stackoverflow.com/questions/6034748/…您对此有何看法?我对所有选项感到困惑,并决定哪些是好/坏:s
    • @Bv202:你读错了另一个问题。许多依赖注入容器兼作服务容器。没有 DI 的 SC 和 Singleton 一样糟糕(人们对它们的糟糕程度有不同的看法)。作为 DIC 的 SC 并不邪恶,因为它公开了它的依赖项而不是隐藏它们。
    【解决方案2】:

    这个问题的解决方案是单例模式。

    你应该有一个带有静态方法的实例类来获取配置值:

    Config::getConfigData($conf_key)
    

    缓存: 这取决于您的数据库中有多少配置数据。我建议缓存这些,而不是在每次需要值时都执行查询。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多