包括vs Extend用于数据访问

时间:2013-05-17 18:45:25

标签: php include extend

这是一个让我烦恼的设计问题,因为在内心深处,我知道我做错了。这不一定只是一个PHP问题,但我现在正在开发一个PHP项目,所以这就是我来自的地方。 我只是给你一个场景: 我有一个数据访问脚本使用的JSON生成类。基本上它是实例化JSONGen类的网站的首选URL,后者又查看静态文件并提取所请求的数据,并将其作为JSON对象发回。包含原始数据的文件具有数组格式,以便于读取和更新(因此无需筛选原始JSON数据和风险语法错误等)。 我的问题是访问该文件。 我所做的是在类定义之外放置一个require([json file])。 [json文件]中的所有内容都分配给一个$ JSON对象。 在类构造函数中,我这样做:

global $JSON;
$this->JSON = $JSON;

(其中$ this-> JSON是私有类变量)。

这使我可以从班级的任何地方访问JSON,这很可爱。 它感觉很hacky,但我找不到任何可以解决这种特定方法的方法。

问题是,一旦有人决定移动类或其他什么,他们理解这个文件的依赖关系的唯一方法就是在头文件中有一个require语句。这是事情的运作方式吗?或者有更好的方法吗?

我应该使用extend并将JSON放入一个类(这对我来说听起来真的很愚蠢),还是继续使用我的include?或者,我是否应该永远不要在这样的类中包含文件,而是将其传递给构造函数或其他一些访问方法?

这个特定的实例是一个小项目,为它设置数据库是没有意义的。我们可以添加到文件,修改配置,以及整个站点更新....所以请不要告诉我切换到DB-我正在寻找更一般意义上的这个特定问题的策略。 / p>

谢谢!

1 个答案:

答案 0 :(得分:0)

可能会为这一个投降但是在这里......

class JSON_Response {
      public static $JSON;

      // don't let people make one of these it gives the illusion that there can be more then one
      protected function __construct(){}
}

然后在你的文件中

JSON_Response::$JSON = $json;

并从JSON_Response::$JSON;

随处访问

如果您经常对json对象执行任何操作(检查标志或其他内容),则只需向JSON_Response类添加静态方法。