Мне нужен совет опытных разработчиков по этому вопросу.Позвольте мне перейти прямо к этому.
У меня есть пользователи, публикующие статьи, и мне нужно показать список статей и отобразить пользователей, которые их опубликовали.
В моем нынешнем методе предрассудков это примерно так:
$result = mysql_getresult("SELECT users.*, articles.*
FROM users JOIN articles ON users.id = articles.user_id
WHERE 1");
while($row = mysql_getrow($result)) {
display_username($row);
display_articletitle($row);
}
Теперь я хочу сделать это ОО метод
class User {
protected $data;
public function loadUserData($id) { $this->data = mysql_readstuff() }
public function displayUserName() { echo $this->data['name'] }
}
class Article {
protected $data;
public function loadArticleData($id) { $this->data = mysql_readstuff() }
public function displayArticleTitle() { echo $this->data['title'] }
}
проблемы с ОО:
1.) Эти классы имеют свои собственные методы для загрузки своих собственныхdata (и многие другие методы), поэтому быстрый запрос mysql для одновременного получения всех данных с помощью JOIN здесь не работает.Загрузка их собственных данных отлично подходит для многих других методов (например, аутентификации).
2.) Я хочу разделить презентацию (используя шаблон savant3), так где я должен разместить методы отображения?Мне нужно будет отобразить множество вещей (задания, комментарии и т. Д.), И я не думаю, что создание метода для каждого из них в шаблоне - это хорошая идея.
Пример приведен для пользователей и статей, ноу меня будет пользователь + комментарий, пользователь + работа + требования.
Я думал о том, чтобы сделать методы отображения статичными и позволить им принимать параметр, но тогда он ничем не отличается от процедурного метода.Или создайте метод setData ($ row), который установит $ data в качестве полученного параметра.
Возможно, существует общее решение этой проблемы.
Любой совет приветствуется.
Спасибо, Skaccer