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

21 Авг 2019 в 07:02
223 +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 Апр 2024 в 13:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир