子对象之间的共享方法
问题描述:
我想共享属于父对象的对象之间的方法。子对象之间的共享方法
我有一个主对象,它有处理不同任务的子对象。
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()
)?
答
你可以设置一个类的静态属性和staticaly称之为:
static public function parse() {
<some code>
}
和$template->render();
你的设计是破称呼它
Url::parse();
。为什么一个模板对象,负责显然是呈现一些东西,必须调用url-> parse?如果你有这个解释,你的问题的答案是使用[依赖注入](http://stackoverflow.com/questions/6094744/dependecy-hell-how-does-one-pass-dependencies-to-deeply-嵌套对象/ 6095002#6095002)。 – Gordon这是我给的一个不好的例子。在我的设计中,渲染模板的选择将取决于所需的URL(所以我想通过URL对象解析,而不是在模板定义中重新创建)。依赖注入是我一直在寻找的,所以谢谢。 –
您可能还对[SOLID](https://secure.wikimedia.org/wikipedia/en/wiki/Solid_%28object-oriented_design%29)和[GRASP](https://secure.wikimedia.org/)感兴趣维基百科/ en/wiki/GRASP_%28object-oriented_design%29)和[Demeter法](https://secure.wikimedia.org/wikipedia/en/wiki/Law_of_Demeter)和[Clean Code Talks] //www.youtube.com/results?search_query=The+Clean+Code+Talks&aq=f) – Gordon