親オブジェクトに属するオブジェクト間でメソッドを共有しようとしています。子オブジェクト間のメソッドの共有
私は主なオブジェクトを持っています。これには、さまざまなタスクを処理する子オブジェクトがあります。これらは、メインのオブジェクトのコンストラクタを使用して作成されます。ここでは
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();
のようにそれを呼び出します。明らかに何かをレンダリングすることであるテンプレートオブジェクトは、url-> parseを呼び出さなければならないのでしょうか?あなたがそれについての説明があるなら、あなたの質問への答えは、[Dependency Injection](http://stackoverflow.com/questions/6094744/dependecy-hell-how-does-one-pass-dependencies-to-deeply-ネストされたオブジェクト/ 6095002#6095002)。 – Gordonそれは私が与えた悪い例でした。私の設計では、レンダリングされたテンプレートの選択は、要求されたURLに時々依存します(テンプレート定義内で何かを再作成するのではなく、URLオブジェクトを解析したいと思います)。 Dependency Injectionは私が探していたものなので、ありがとう。 –
また、[SOLID](https://secure.wikimedia.org/wikipedia/en/wiki/Solid_%28object-oriented_design%29)と[GRASP](https://secure.wikimedia.org/)に興味があります。 Wikipedia/en/wiki/GRASP_%28object-oriented_design%29)と[Demeterの法則](https://secure.wikimedia.org/wikipedia/en/wiki/Law_of_Demeter)と[The Clean Code Talks](http: //www.youtube.com/results?search_query=The+Clean+Code+Talks&aq=f) – Gordon