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

21 Авг 2019 в 07:02
196 +1
0
Ответы
1

Да, вы правильно копаете. Для того чтобы избежать повторения кода и сделать его более структурированным, можно создать класс showUsers, который будет отвечать за формирование html для вывода пользователей с различными вариантами. Класс showUsers может принимать параметр, например, $view, который будет определять, какой вид пользователей нужно отобразить: друзья, пользователи из группы и т.д.

Примерно так:

class showUsers {
private $tpl;
private $row;
private $view;
public function __construct($tpl, $row, $view) {
$this->tpl = $tpl;
$this->row = $row;
$this->view = $view;
}
public function show() {
// формирование html в зависимости от вида пользователей
if($this->view == 'friends') {
// вывод друзей
} elseif($this->view == 'group') {
// вывод пользователей из группы
} elseif($this->view == 'comments') {
// вывод комментариев
}
}
}
// Пример использования:
while($row = $res->fetch_assoc()){
$showUsers = new showUsers($tpl, $row, 'friends'); // передаем объект шаблонизатора, данные юзера и тип вывода
$users[] = $showUsers->show(); // формируем html и записываем в массив
}
// дальше собираем все в одну строку и выводим

Таким образом, вы можете использовать один класс для формирования html с разными вариантами вывода пользователей. Класс showUsers изолирует логику формирования html от запросов к базе данных, что делает ваш код более модульным и удобным для поддержки.

Примеры и учебные материалы по созданию классов и организации кода на PHP можно найти в интернете, например, на специализированных ресурсах для программистов, в документации PHP или на популярных ресурсах для обучения программированию.

20 Апр 2024 в 13:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир