작업에서 우리는 관련 데이터/객체를 가져 오는이 메서드가 아주 멋진 것을 발견했습니다.이 PHP 예제에서 사용하는 기술을 인식하고 이름을 지정하는 데 도움이됩니다.
이class Country {
private $language; //$language will be an object of class Language
private $regions; //$regions will be an ARRAY of Region objects
//in the constructor i don't load regions or language
//magic method
public function __get($name) {
$fn_name = 'get_' . $name;
if (method_exists($this, $fn_name)) {
return $this->$fn_name();
} else {
if (property_exists($this, $name))
return $this->$name;
}
return $this->$name;
}
public function get_language() {
if (is_object($this->language)) return $this->language;
$this->language = new Language($params); //example
return $this->language;
}
public function get_regions() {
if (is_array($this->regions)) return $this->regions;
$this->regions = array();
$this->regions[] = new Region('fake');
$this->regions[] = new Region('fake2');
return $this->regions;
}
}
그래서 아이디어는 다음과 같습니다 :
오른쪽 예에, 나는 내부의 관련 개체를 사용해,이 클래스가
내가 나라의 인스턴스를 원하는,하지만 난 이제 언어와 지역을 필요 없어요 .
다른 경우에는 속성이 필요하므로 마법 메서드가 처음으로 해당 속성을 검색합니다.
$country = new Country();
echo "language is". $country->language->name;
echo "this country has ". sizeof($country->regions)." regions";
이 주문형 방법 이름을 가진 (즉, 너무 관련 개체의 중첩 루프를 피할 수)? 지연 등록 정보? 주문형 속성? 내가 그들을 필요로 다른 경우
'지연로드'는 위키피디아 힌트의 일반적인 이름은 – Mchl