我对PHP中的OOP相对较新,我不确定我尝试做的是可行的还是推荐的。无论如何,我无法弄明白。我很感激任何可能有用的教程或文档的指示 - 我不希望在这里得到全面的答案。
我有一个系统,每个用户都有许多“图书馆”。每个库都包含许多“元素”。
数据库设置如下:
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
的ID,element_id
来自elements
。
我希望能够访问给定用户的库及其元素。
我已经设置了库类,可以使用它来检索库列表(或子列表)。
我是这样做的:
$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]
检索特定元素?
正如我所说,我不希望这里有一个全面的解释 - 只是指示让我开始。
答案 0 :(得分:2)
<?php
class Library {
public $element;
public $data;
public function __construct($sublibrary) {
$this->data = $sublibrary;
}
public function getAllElements() {
// populate $this->element using $this->data
}
}
class LibrarySet {
public $user_id;
public $data_array;
public $sublibraries;
public function getMyLibraries() {
// populate $this->data_array
$this->sublibraries = Array();
foreach($this->data_array as $index => $sublibrary) {
$this->sublibraries[$index] = new Library($sublibrary);
$this->sublibraries[$index]->getAllElements();
}
}
}
$mylibraryset = new LibrarySet();
$mylibraryset->getMyLibraries();
$mylibraryset->sublibraries[0]->element[0]
?>