类的大型配置,实现建议

时间:2011-05-23 14:58:51

标签: php optimization configuration refactoring ini

所以我有一个大课程,我正在重构,以便更灵活。

INI文件中有超过100个可配置属性(变量)。有些是开发设置,有些是生产设置。

目前我使用环境标志来提取我需要的INI设置(dev或prod)。

所有INI字段都是必填字段,必须设置。 (目前正在使用setter)。

那么更有意义呢?

  • 答:保持当前设置
  • B:转移到其他类型的配置设置(如xml或其他)
  • C:将所有设置移动到脚本本身并删除INI解析和验证代码(setter)
  • D:建议?

奖金问题:

我在周末读到这篇文章:http://berryllium.nl/2011/02/getters-and-setters-evil-or-necessary-evil/并且想知道我如何能够遵循更多这种类型的开发风格,但是如何不设置getter / setter功能来设置必填字段会让人感到困惑?我理解需要getter / setter并想知道我是否正确实现它们?

我使用INI来处理数据库设置,验证限制(认为支出限制为100美元但可能会改变),大数组(静态值,如美国50个国家,但也有能力添加美国领土)

2 个答案:

答案 0 :(得分:2)

  • 如果您想保留设置 可读,保持当前设置或 将设置移动到PHP脚本(但是 不要将它们硬编码到类中。)
  • 如果 你想提高性能 - 使用JSON格式或PHP脚本 - json_decode工作得更快,PHP脚本 工作得更快,可以轻松缓存 由APC。
  • 作为变体,您可以解析 设置文件一次并全部放入 缓存中的设置(APC或memcache)。

另外。我想没有人关心,但我对吸气剂和制定者有我的看法:) Getters和Setters不是邪恶的。封装的想法不只是隐藏字段,而是隐藏,类是如何工作的。 getter和setter可以在接口中声明,因此您可以将一个对象替换为另一个 - 这就是封装发明的原因!

让我们以Berry Langerak的文章为例 - withdrawdeposit它的制定者。所有这些代码都可以在setBalance方法中成功完成,几乎没有任何改变。所有这些检查,比较 - 这是制定者的通常工作。

为什么公共领域是邪恶的?因为对象无法控制它们的更改,因为它们无法在接口中声明。吸气剂和制定者可以做到这一点,因此它是OOP的完美工具。

当然,访问者可以写得很傻,但这并不意味着他们是邪恶的。班上的任何方法都可以写得很傻。

答案 1 :(得分:1)

有趣的问题。

我非常怀疑所有这些变量在您的开发区域和生产区域之间是否存在差异。并非每个调试时可能更改的变量都必须存储在配置文件中。

我建议对大多数变量使用常量。 你有自动完成,大量的IDE选项,它很容易编辑。更不用说将它们分成不同的文件然后解析大量的ini是更合乎逻辑的。