dzheka3d
@dzheka3d

Что делать с повторяющимися методами?

Всем привет! На сайте есть с десяток отдельных модулей: "новости", "события", "комментарии" и т.д. И у каждого модуля, соответственно, есть свой класс, в котором он генерируется.
У каждого из них есть постраничная навигация, которая генерируется одной внешней функцией paginator();
Но для каждого нужно при подключении передавать параметры: "текущая страница", "количество на страницу" и пр.
Выходит, что у каждого класса есть одинаковые методы: setPage(), setOnPage(), getStart(), getLimit() так далее... Кроме этих еще есть одинаковые. Как с этим быть? с одной стороны можно ведь кинуть их в отдельных класс, а с другой получится ведь зависимость классов друг от друга, потому как эти методы должны будут изменить одинаковые по названию свойства в каждом из классов.
  • Вопрос задан
  • 196 просмотров
Пригласить эксперта
Ответы на вопрос 4
@entermix
Скорее всего неправильно проектируете свое приложение. Пагинацию обычно выносят в отдельный модуль/класс. Рекомендую посмотреть популярные PHP OOP фреймворки.
Так же рекомендую почтитать: о наследовании в PHP
Ответ написан
@heartdevil
плыву как воздушный шарик
Можно сделать так:
Создаете интерфейс

public interface PagedListInterface
{
//..
PageIndex
PageSize
TotalCount
TotalPages
//..
}


далее реализуете интерфейс

class PagedList implements PagedListInterface
{
//тут вся логика листалки
}


Создаете еще один интерфейс

public interface NewsInterface
{
//Различные методы
//И среди прочих
PagedListInterface GetNewsList()
}


И далее в классе News

class News implements NewsInterface
{
public PagedListInterface GetNewsList()
}
Ответ написан
Комментировать
@samuser
programmer
Нужно наследование использовать.
Либо отдельный класс надо писать для пагинации.
Ответ написан
Комментировать
@McBernar
Наследование или трейты.
Отнаследоваться не всегда возможно, а вот трейты вам точно никто не мешает делать.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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