Php 子对象之间的共享方法

Php 子对象之间的共享方法,php,oop,class,object,scope,Php,Oop,Class,Object,Scope,我正在尝试在属于父对象的对象之间共享方法 我有一个主对象,它有处理不同任务的子对象。这些是使用主对象构造函数创建的: class engine { public function __construct() { $this->db = new db(); $this->url = new url(); $this->template = new template(); } } 以下是我将如何使用我的主要对象的示例: $engine =

我正在尝试在属于父对象的对象之间共享方法

我有一个主对象,它有处理不同任务的子对象。这些是使用主对象构造函数创建的:

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()
)?

您可以设置类的静态属性并静态调用它:

static public function parse() {
    <some code>
}
静态公共函数parse(){
}

并像
Url::parse()那样调用它来自
$template->render()

您的设计已被破坏。为什么一个模板对象(它显然负责呈现一些东西)必须调用url->parse?如果你对此有一个解释,你的问题的答案是使用。这是我举的一个糟糕的例子。在我的设计中,呈现的模板的选择将取决于不时请求的URL(因此我希望通过URL对象进行解析,而不是在模板定义中重新创建某些内容)。依赖注入正是我想要的,所以谢谢。您可能还对和感兴趣,OP询问的是OOP而不是基于类的编程和/或如何通过紧密耦合来确定应用程序的可维护性。如果您没有认识到,问题是:“子对象如何访问其他子对象的方法”。这就是它们如何访问其他子对象的方法。是的,以最不理想的方式。如果你这样做,你也可以完全抛弃对象,使用过程编程。