부모 개체에 속한 개체간에 메서드를 공유하려고합니다.자식 개체간에 메서드 공유
다른 개체를 처리하는 하위 개체가있는 주 개체가 있습니다. 여기
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();
과 같이 호출. 왜 responsibiliy가 뭔가를 렌더하는 템플릿 객체가 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/)에 관심이있을 수 있습니다. 위키피디아/en/wiki/GRASP_ % 28 객체 지향 설계 % 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