dzheka3d
@dzheka3d

Как придумать логику для вывода пользователей?

Всем привет! Объясните плз на примере вывода пользователей, как построить логику приложения так, чтобы код максимально не повторялся и как его правильно разбить по классам.
- На одной из страниц есть вывод списка пользователей,
- На другой странице выводятся мои друзья.
- На третьей странице пользователи состоящие в группе
Все три варианта вывода немного отличаются друг от друга визуально (где-то есть кнопка, где-то нет логина, где-то нет аватара)

Я не могу понять...
Получается мне нужны три разных php файла, в котором будут делаться запросы к базе со своими условиями. Дальше в каждом подключаем один класс "showUsers" и делаем что-то вроде:
while($row = $res->fetch_assoc()){
   $showUsers = new showUsers($tpl, $row); // передаем объект шаблонизатора и данные юзера
   $showUsers = setView('friends'); // указываем что выводим для показа на странице "мои друзья"
   $users[] = $showUsers->show(); // формируем html и записываем в массив
}
// дальше собираем все в одну строку и выводим


т.е. суть в том, что класс формирования html у нас один с разными выриантами вывода, а получение пользователей из базы в каждом модуле отдельное? Я правильно копаю?

А если это будет вывод комментариев, там тоже выводится аватар пользователя имя и прочее. Я уже не смогу совместить со своим классом? Как это вообще делается, где можно посмотреть пример?
  • Вопрос задан
  • 247 просмотров
Решения вопроса 1
@MrTimon
Вопрос очень обширный. Могу посоветовать Вам почитать про MVC (Model-View-Controller). Если вкратце то Вам нужно иметь Модель юзера (клас), Модель для Коллекции юзеров, Темплиты для каждого выводимого варианта шаблона и пхп файл который будет направлять инфу про юзеров в шаблоны и выводить результат.
Тоисть запросы приходят на контролер (index.php к примеру). В нем разбираете урл и определяете какую вюшку (тоисть какой темплит) нужно загружать. Потом создаете объект класса с юзерами и передаете полученый массив юзеров у вюшку а полученый результат выводите на екран.
Тут достаточно неплохо описан принцип. Надеюсь это Вам поможет.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@masterfreelance
программист со стажем
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы