Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Код без ивентов:
- function controllerCreateOrderAction($request, $SmsService, $EmailService){
- $order= Order::createByRequest($request);
- $SmsService->sendSmsToAdmin($order);
- $EmailService->sendConfirmEmail($order);
- }
- // Конец кода без инвентов
- //Код с ивентами:
- function controllerCreateOrderAction($request, $SmsService, $EmailService){
- $order= Order::createByRequest($request);
- event('order.create', new CreateOrderEvent($order));
- }
- // регистрируем ивент
- $eventDispatcher->addSubscriber('order.create',[SmsSender::class, EmailSender::class]);
- // создаем обработчик ивента смс оповещений. Он должен принимать ивент определенного интерфейса.
- class SmsSender{
- public function handle(SmsSendAbledEventInterface $event){
- $this->smsService->sendSms($event->getPhone(), $event->getSmsText());
- }
- }
- // аналогично
- class EmailSender{
- public function handle(EmailSendAbledEventInterface $event){
- $this->smsService->sendSms($event->getEmail(),$event->getEmailSubject(), $event->getEmailText());
- }
- }
- // интерфейс ивентов для рассылки смс
- SmsSendAbledEventInterface smsSendAbledEventInterface{
- public function getPhone();
- public function getSmsText();
- }
- // интерфейс ивентов для рассылки почты
- SmsSendAbledEventInterface EmailSendAbledEventInterface{
- public function getEmail();
- public function getEmailSubject();
- public function getEmailText();
- }
- // Ивент на создание заказа.
- class CreateOrderEvent implements SmsSendAbledEventInterface, SmsSendAbledEventInterface{
- public function getPhone(){
- return $this->order->getUser()->getPhone();
- };
- public function getSmsText(){
- return "У вас новый заказ товарищ ". $this->order->getUser()->getName();
- }
- // и т.д.
- public function getEmail();
- public function getEmailSubject();
- public function getEmailText();
- }
- // конец кода с ивентами. Где профит?
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement