ООП шаблон с методами, вызывающими репозитории

0

У меня есть класс DashboardService (определенный как служба в symfony2), я использую его для вызова некоторых методов для получения результатов (только запросов) из некоторых репозиториев и отображения данных.

class DashboardService {

/**
 * @var EntityManager 
 */
private $em;

public function __construct(EntityManager $em) {
    $this->em = $em;
}

public function getTotalActiveCampaignsByMonth($month) {

    $campaigns = $this->em->getRepository("WMAdminBundle:Campaign")->countAllActiveCampaignsByMonth($month);

    return $campaigns;
}

public function getTotalContactsByMonth($month) {

    $contacts = $this->em->getRepository("WMAdminBundle:Contact")->countAllContactsSentByMonth($month);

    return $contacts;
}

public function getTotalCAByMonth($month) {
    $ca = $this->em->getRepository("WMAdminBundle:ContactCampaign")->getAllCAByMonth($month);

    return $ca;
}

public function getTop10RentabilityCampaigns() {
    $campaigns = $this->em->getRepository("WMAdminBundle:Campaign")->findAllTop10Rentability();

    return $campaigns;
}

public function getTop10ContactCampaigns() {
    $campaigns = $this->em->getRepository("WMAdminBundle:Campaign")->findAllTop10Contacts();

    return $campaigns;
}

}

Является ли этот класс шаблоном ООП или чем-то еще?

Теги:
oop
doctrine
repository-pattern

1 ответ

1
Лучший ответ

он похож на базовую службу приложений в типичной многоуровневой архитектуре.

Службы приложений: используются внешними потребителями для общения с вашей системой (думаю, веб-службы). Если потребителям нужен доступ к операциям CRUD, они будут раскрыты здесь.

  • 0
    Итак, вы думаете, что это хорошая практика - использовать этот класс в моем контроллере следующим образом: $this->get("dashboard")-> getTotalActiveCampaignsByMonth($month); или предпочтительнее сделать это непосредственно в контроллере: $this->em->getRepository("WMAdminBundle:Campaign")->countAllActiveCampaignsByMonth($month); и удалить мой класс обслуживания?
  • 0
    не стоит вставлять (или размещать) свои репозитории в контроллерах и использовать их. Потому что не все ваши вызовы репозитория просто извлекают данные. В большинстве командных вызовов вам нужно проверить и проверить некоторые бизнес-правила, а затем вызвать метод репозитория. Это то, что вы должны делать в службе приложений.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню