Ответы пользователя по тегу Паттерны проектирования
  • Как правильно реализовать создание дочерних экземпляров класса?

    mad_maximus
    @mad_maximus
    interface SenderInterface
    {
         public function sendAnswer(string $message): void;
    
         public function supports(string $type): bool;
    }
    
    class EmailSender implements SenderInterface
    {
        public function sendAnswer(string $message): void
        {
               // тут отправляете сообщение
        }
       
         public function supports(string $type): bool
         {
               return 'email' === $type;
         }
    }
    
    class SmsSender implements SenderInterface
    {
         public function sendAnswer(string $message): void
        {
               // тут отправляете сообщение
        }
    
         public function supports(string $type): bool
         {
               return 'sms' === $type;
         }
    }
    
    class SenderAggregate
    {
         private $providers;
         
         public function __construct(SenderInterface ...$providers)
         {
               $this->providers = $providers
         }
    
        public function send(string $type, string $message)
        {
               foreach ($this->providers as $provider) {
                  if ($provider->supports($type) {
                      return $provider->sendAnswer($message);
                  }
               }
    
                throw Exception;
        }
    }
    Ответ написан
    Комментировать
  • Где правильней получать данные из API (MVC)?

    mad_maximus
    @mad_maximus
    Ни там, ни там. Вы же данные на сайте выводите не напрямую из апи, а где-то сохраняете перед выводом. Соответственно, контроллер тут не нужен. Или консольная команда, или какой-то хэндлер/сервис, а уже дергать руками, если надо, в контроллере.
    Ответ написан
    Комментировать