php - 类选项值的最佳实践位置

标签 php model-view-controller oop global-variables

在 PHP MVC 项目中,我有一些模型类从 RESTful Web 服务加载数据,这需要 API key 。我想将必要的 API key 存储在我的应用程序的中央配置文件中。

要为我的类获取 API key ,哪种方法被认为是最好的?

  1. 将值放入 $GLOBALS 中,以便可以在使用它的模型类中直接访问它。
  2. 在实例化时将值传递给类。

方法 #2 似乎最适合 OOP 和代码重用,但方法 #1 非常方便。我通常使用方法 #2,但我想知道方法 #1 是否通常被认为是 $GLOBALS 的可接受使用,即使在 OOP MVC 环境中也是如此。

最佳答案

Symfony 1.4 使用 sfConfig::get('my_value'),这就像你的第一个选项,只是包装在一个对象中。

Symfony 2使用dependency injection减少耦合,这就像你的第二个选择。请务必查看this link有关依赖注入(inject)的良好解释。

但是,减少耦合会增加复杂性。所以,这确实是一个权衡。我认为要点是在你的申请中保持一致。无论使用哪种方法都可以更改,只要您在使用上保持一致即可。

我会选择依赖注入(inject)。如果您一直使用它,它不仅易于使用,而且更有可能产生可重用代码。计算机中最慢的部分是开发人员,因此我尝试尽可能构建高质量、可重用的组件。我还应该注意到,如果您选择通过添加单元测试来提高代码的质量和一致性,那么使用依赖项注入(inject)可以使构建单元测试变得非常容易。

希望有帮助...

关于php - 类选项值的最佳实践位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8117132/

相关文章:

php - mb_substr 和 substr 的区别

php - 带负时间戳的 datetime php fatal error

php - 从 View 表单到 PHP Controller 的 jquery post 未发布

oop - 面向对象编程 - 何时添加新类?

php - 使用对象作为参数与在方法中创建对象

php - 根据发送时间使用 AJAX 脚本检索聊天消息

java - 一键操作和两种不同的 View

java - Java 数组中的 MVC

javascript - 我无法运行我的方法 -JavaScript

php - 与 PHP 和 mySQL 的异步事务