Serveis de Laravel
Aprèn a utilitzar els serveis integrats de Laravel: correu, notificacions, cues, events, storage, cache, sessions, logging i scheduler.
Qualsevol aplicació web moderna necessita enviar correus electrònics, processar tasques en segon pla, emmagatzemar fitxers, gestionar sessions d'usuari i molt més. Aquestes necessitats són tan universals que construir-les des de zero per a cada projecte seria una pèrdua de temps enorme i una font constant d'errors. Laravel ho entén perfectament i proporciona un conjunt complet de serveis integrats que cobreixen totes aquestes operacions habituals, cadascun amb una API elegant i consistent que fa que tasques complexes es puguin resoldre amb poques línies de codi.
En lloc de reinventar la roda, Laravel actua com una capa d'abstracció sobre eines i protocols ja provats. Per exemple, el sistema de correu utilitza Symfony Mailer per sota, el sistema de cues pot treballar amb Redis, Amazon SQS, Beanstalkd o la pròpia base de dades, i el sistema de cache suporta Memcached, Redis, DynamoDB i fitxers locals. Aquesta filosofia és fonamental: Laravel no reescriu protocols de correu ni sistemes de cua, sinó que els embolcalla amb una interfície unificada que et permet canviar d'implementació sense modificar ni una línia del teu codi d'aplicació.
Els serveis que Laravel ofereix es poden agrupar per la seva funció. El sistema de correu electrònic (Mailables) permet construir correus amb plantilles Blade o Markdown, adjuntar fitxers i enviar-los a través de qualsevol proveïdor SMTP, Mailgun, Postmark, Amazon SES o Resend. Les notificacions porten el concepte de comunicació un pas més enllà: un sol objecte de notificació pot enviar un missatge per correu, guardar-lo a la base de dades, publicar-lo a Slack i emetre'l per broadcast, tot alhora. Les cues permeten diferir tasques costoses (enviar correus, processar imatges, generar informes) perquè s'executin en segon pla sense fer esperar l'usuari.
El sistema d'events i listeners permet desacoblar la lògica de l'aplicació. Quan passa alguna cosa important (un usuari es registra, una comanda es completa), l'aplicació dispara un event i diversos listeners poden reaccionar de manera independent: enviar un correu de benvinguda, actualitzar estadístiques, notificar l'equip. Això fa que el codi sigui molt més mantenible perquè cada peça de lògica viu al seu lloc natural, sense crear dependències creuades.
El sistema de Storage proporciona una abstracció per treballar amb fitxers, tant locals com al núvol. Pots pujar, descarregar, copiar i eliminar fitxers amb la mateixa API independentment de si estan al disc local o a Amazon S3. La cache millora dràsticament el rendiment emmagatzemant resultats de consultes costoses, respostes d'API externes o qualsevol dada que no canviï sovint. Les sessions gestionen l'estat de l'usuari entre peticions, permetent recordar informació com el contingut del carret de compra o els missatges flash.
El sistema de logging registra tot el que passa a l'aplicació: errors, advertències, informació de depuració i events importants. Basat en Monolog, suporta múltiples canals (fitxers, Slack, bases de dades, serveis externs) i pots configurar-los perquè els errors crítics arribin immediatament al teu canal de Slack mentre la informació de depuració es queda als fitxers locals. Finalment, el Scheduler permet programar tasques recurrents (netejar dades antigues, enviar informes setmanals, sincronitzar dades amb APIs externes) directament des del codi PHP, sense necessitat de configurar múltiples entrades de cron al servidor.
Tots aquests serveis comparteixen un patró de disseny comú: el patró de drivers. Això significa que cada servei defineix una interfície (contracte) i múltiples implementacions (drivers). Per exemple, el servei de cache pot funcionar amb el driver de fitxers, el driver de Redis, el driver de Memcached o el driver de base de dades, però la teva aplicació sempre utilitza els mateixos mètodes (Cache::get(), Cache::put(), etc.). Canviar de driver és tan senzill com modificar una variable d'entorn al fitxer .env: la resta del codi no canvia. Aquesta és una de les raons per les quals Laravel és tan popular: et permet començar amb la implementació més senzilla (fitxers locals, base de dades) i escalar a solucions més robustes (Redis, SQS, S3) quan ho necessitis, sense refactoritzar res.
La configuració de tots aquests serveis segueix el mateix patró: un fitxer de configuració a config/ que defineix els drivers disponibles i el driver per defecte, i variables d'entorn al fitxer .env que permeten canviar el comportament entre entorns (desenvolupament, staging, producció) sense tocar el codi. Aquesta separació entre configuració i codi és essencial per desplegar la mateixa aplicació a diferents entorns amb comportaments diferents.
Mailables, Markdown mail, adjunts, cues i configuració de drivers.
NotificacionsNotificacions multicanal: mail, base de dades, Slack i broadcast.
Cues i JobsProcessament en segon pla, workers, reintentos i jobs encadenats.
Events i ListenersDesacoblar lògica amb events, listeners i subscribers.
StorageSistema de fitxers, discs locals i al núvol, pujada i descàrrega.
CacheDrivers, operacions, tags, locks atòmics i estratègies de cache.
SessionsGestió d'estat, flash data, drivers i seguretat de sessions.
LoggingCanals, nivells, Monolog, context i alertes a Slack.
SchedulerProgramar tasques, freqüències, restriccions i monitorització.