【发布时间】:2011-11-24 15:09:31
【问题描述】:
我正在尝试在属于父对象的对象之间共享方法。
我有一个主对象,它有处理不同任务的子对象。这些是使用主对象构造函数创建的:
class engine {
public function __construct() {
$this->db = new db();
$this->url = new url();
$this->template = new template();
}
}
以下是我将如何使用我的主要对象的示例:
$engine = new engine();
$engine->db->connect();
$engine->url->parse();
$engine->template->render();
子对象如何访问其他子对象的方法(例如,template->render() 如何调用url->parse())?
【问题讨论】:
-
你的设计坏了。为什么一个显然负责渲染某些东西的模板对象必须调用 url->parse?如果您对此有解释,您的问题的答案是使用Dependency Injection。
-
那是我举的一个坏例子。在我的设计中,呈现的模板的选择将不时取决于请求的 URL(因此我想通过 URL 对象进行解析,而不是在模板定义中重新创建某些内容)。依赖注入是我一直在寻找的,所以谢谢。
-
您可能还对SOLID 和GRASP 以及Law of Demeter 和The Clean Code Talks 感兴趣
标签: php oop class object scope