Как объявить «подобъекты» в PHP

Я относительно новичок в ООП в PHP, и я не уверен, что то, что я пытаюсь сделать, возможно или рекомендовано. Во всяком случае, не могу понять. Буду признателен за любые указатели на учебные пособия или документы, которые могут помочь - я не жду здесь полного ответа.

У меня есть система, в которой у каждого пользователя есть несколько «Библиотек». Каждая библиотека содержит ряд «Элементов».

БД настраивается следующим образом:

user_libraries
 - id (unique)
 - user_id (identifies user)
 - name (just a string)

elements
 - id (unique)
 - content (a string)

library_elements
 - id (unique)
 - library_id
 - element_id

где library_id - это идентификатор из user_libraries , а element_id - это идентификатор из элементов ].

Я хочу иметь доступ к определенной пользовательской библиотеке и ее элементам.

Я установил класс библиотеки и могу использовать его для получения списка библиотек (или подсписка).

Я делаю это так:

$mylibraryset = new LibrarySet();
$mylibraryset->getMyLibraries();

что дает (когда я использую print_r):

LibrarySetObject (
 [user_id] => 105
 [data_array] => Array (
  [0] => Array (
   [id] => 1
   [user_id] => 105
   [type] => 1
   [name] => My Text Library
  )
  [1] => Array (
   [id] => 2
   [user_id] => 105
   [type] => 2
   [name] => Quotes
  )
 )
)

Теперь я бы хотел иметь возможность для каждой из этих библиотек (элементов в data_array), чтобы получить все элементы.

Лучшая идея, которая у меня была до сих пор, - это сделать что-то вроде:

foreach($mylibrary->data_array as $library) {
 $sublibrary = new Library();
 $sublibrary -> getAllElements();
}

где Sublibrary - это еще один класс, который имеет функцию getAllElements. Однако я не могу заставить его работать, и я не уверен, что нахожусь на правильном пути ...

Есть ли способ, которым я смогу сделать что-то вроде этого:

$mylibrary->sublibraries[0]->element[0]

получить определенный элемент?

Как я уже сказал, я не жду здесь полного объяснения - просто указатели, чтобы я начал.

7
задан Sharon 14 January 2012 в 11:27
поделиться