Что делать с повторяющимися методами? Всем привет! На сайте есть с десяток отдельных модулей: "новости", "события", "комментарии" и т.д. И у каждого модуля, соответственно, есть свой класс, в котором он генерируется.
У каждого из них есть постраничная навигация, которая генерируется одной внешней функцией paginator();
Но для каждого нужно при подключении передавать параметры: "текущая страница", "количество на страницу" и пр.
Выходит, что у каждого класса есть одинаковые методы: setPage(), setOnPage(), getStart(), getLimit() так далее... Кроме этих еще есть одинаковые. Как с этим быть? с одной стороны можно ведь кинуть их в отдельных класс, а с другой получится ведь зависимость классов друг от друга, потому как эти методы должны будут изменить одинаковые по названию свойства в каждом из классов.

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

Для избежания повторения кода и уменьшения зависимости классов друг от друга можно использовать наследование. Вы можете создать базовый класс, где будут содержаться все общие методы и свойства для всех модулей, а затем унаследовать этот класс в каждом из модулей. Таким образом, вы сможете использовать общие методы без повторения кода в каждом классе.

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

class BaseModule {
protected $currentPage;
protected $perPage;
public function setPage($page) {
$this->currentPage = $page;
}
public function setOnPage($perPage) {
$this->perPage = $perPage;
}
public function getStart() {
return ($this->currentPage - 1) * $this->perPage;
}
public function getLimit() {
return $this->perPage;
}
}
class NewsModule extends BaseModule {
// дополнительные методы и свойства для модуля "новости"
}
class EventsModule extends BaseModule {
// дополнительные методы и свойства для модуля "события"
}
// Использование
$newsModule = new NewsModule();
$newsModule->setPage(1);
$newsModule->setOnPage(10);

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

20 Апр в 13:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 718 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир