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