정말 아무 제목이 그래서 누군가가 내 드리프트를 일단 편집 주시기 바랍니다 무엇을 생각 ... 내 예를 들어기본 데이터가있는 클래스와 그 이상, 더 많은 데이터 - 부분로드?
이 없다, 우리는 user
및 book
클래스가 있습니다.
각 사용자는 우리의 user_data
테이블에 한 줄, 우리의 book_data
테이블의 각 책 한 줄, 그리고 각 사용자의 컬렉션 일대 user_book_collection
테이블에서 조회 할 수 있습니다.
사용자 개체를로드 할 때 나는 입니다. 모든 기본 데이터 (이름, 나이, 위치)를 원하지만 사용자의 서적 컬렉션을 알고 싶거나 원치 않을 수 있습니다. I 아마 그럴 필요가 없습니다.은 해당 컬렉션의 각 책에 대한 모든 기본 데이터를 알고 싶지만 때로는 가능할 수도 있습니다.
하지만이 모든
RELATIONSHIP MAP
User
|-- name
|-- age
|-- location
|-- book collection (ARRAY)
|-- Great Gatsby
|-- Grapes of Wrath
|-- Catch-22
|-- Huckleberry Finn
|-- author
|-- edition
|-- publisher
|-- price
내 현재의 접근 방식은 사용자의 생성자를 통해 데이터의 첫 번째 "계층"을로드하는 것입니다 ... 만약에있을 필요가 가능합니다.
public function getBookCollection() {
if (empty($this->_Books)) {
self::loadBookCollection();
}
return $this->_Books;
}
private function loadBookCollection() {
// query dbase with user's ID
// load results into $this->_Books array
}
empty()
검사는 다른 방법으로 $_Books
배열에 대한 데이터를 얻을 수있는 데이터베이스에 반복적 여행을 방지하는 것입니다 : 내가 뭔가에 대한 자신의 컬렉션을 알 필요가 있다면 그리고,이 같은 방법 쌍을 가지고 수업. 나는이 난 그냥 사용자 개체를 초기화 할 때마다 데이터의 전체 거대한 트리를로드보다 더 나은 생각 했어요
이것은 간단한 예입니다,하지만 난 충분히 분명하다 생각합니다.
내 질문은 :
1)이 같은 일을 처리하는 일반적인 방법이다? 이런 종류의 데이터가 겹치는 상황을 상상할 수 있습니다 ...
2) 더 좋은 방법이 있습니까?
감사합니다. 누군가 제 제목에 균열을 가지고 있습니다.
나는 그 문제를 다루는 좋은 방법이라고 생각합니다. __get() 및 __set()과 같은 PHP 마법 메서드를 살펴볼 수도 있습니다. –