ArticleService: Usando controladores, eventos de Laravel

ArticleService

¡Usando controladores, eventos, oyentes, servicios y validación de Laravel juntos!

ArticleService – Podemos poner todos los códigos de una aplicación web en los controladores, ¡pero esta acción parece una locura y no es correcto hacerlo!

En este artículo veremos cómo estructurar una aplicación web con un patrón conocido. Debo decir que puede hacer los ejemplos a continuación de otras maneras diferentes y probablemente todos sean correctos, ¡así que este artículo es solo algunos ejemplos para hacer las cosas!

Déjeme explicarle el escenario:

¡Imagínese que tenemos una aplicación mediana simple y tendrá una sección de Contenido en la que un usuario puede compartir una publicación de blog y sus seguidores notarán cuando se publique un nuevo artículo!


1. Manera fea

Cree un ArticleController y coloque todos los códigos en él, como se muestra a continuación:

2. Mejor manera

Primero, debemos reemplazar Request $request por ArticleStoreRequest $request para validar los datos de una mejor manera:

php artisan make:request ArticleStoreRequest

No olvide devolver true en el método de authorize(), para que el usuario pueda realizar esta acción:

ArticleService

En segundo lugar, debemos hacer que ArticleService mueva la lógica de creación del controlador al servicio. ¡Porque lo único que hará un controlador es pasar datos!

Por lo tanto, crearemos ArticleService en la carpeta Servicios y escribiremos el código de creación en un método relacionado simple y, considerando el principio de responsabilidad única, moveremos la imagen de carga a su método como se muestra a continuación:

Echemos otro vistazo a nuestro ArticleController nuevamente para ver qué se ha cambiado hasta ahora:

ArticleService

  • Ahora usemos Event y Listener para enviar correos electrónicos a los seguidores del autor del artículo:
php artisan make:event ArticlePublishedEventphp artisan make:listener ArticlePublishedListener --event=ArticlePublishedEvent

Esta filosofía nos ayuda a dividir las operaciones y el evento se disparará automáticamente cuando y donde queramos. ¡Además esto pretenderá que nos repitamos!

La clase de evento debe aceptar el modelo de usuario y el modelo de artículo, que luego se pasa a CUALQUIER oyente de ese evento:

Luego, el evento se dispara desde el controlador, así:

ArticleService

Y, en la clase Listener, repetimos la misma lógica:

ArticleService


¡Y eso es todo! ¿De qué manera prefieres hacerlo? – ArticleService

Recent Post