0

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

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

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

这使我可以从课堂上的任何地方访问 JSON,这很可爱。感觉很老套,但我在任何地方都找不到解决这种特定类型方法的任何东西。

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

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

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

谢谢!

4

1 回答 1

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 类。

于 2013-05-17T19:11:30.993 回答