Installation
tilttek/seasonal-eventscomposer require tilttek/seasonal-events
La bibliothèque exige PHP 8.5 ou une version plus récente, phil/recurrence, phil/resource et une horloge PSR-20,
comme symfony/clock.
Raccordement
SeasonalEvents reçoit un SeasonCatalogue et une horloge :
use Symfony\Component\Clock\Clock;
use Tilttek\SeasonalEvents\SeasonalEvents;
use Tilttek\SeasonalEvents\SeasonReader;
use Tilttek\SeasonalEvents\Store\InMemorySeasonCatalogue;
$seasons = new SeasonalEvents(
new InMemorySeasonCatalogue(SeasonReader::all(require 'config/seasons.php')),
new Clock(),
);
Dans une application Symfony, enregistrez-le comme service et faites de ActiveContent un alias vers lui, afin que
les autres paquets lisent ce qui est en cours par le port :
services:
Tilttek\SeasonalEvents\Contract\SeasonCatalogue:
class: Tilttek\SeasonalEvents\Store\InMemorySeasonCatalogue
factory: [App\Seasons\Seasons, catalogue]
Tilttek\SeasonalEvents\SeasonalEvents:
arguments: ['@Tilttek\SeasonalEvents\Contract\SeasonCatalogue', '@clock']
Tilttek\SeasonalEvents\Contract\ActiveContent: '@Tilttek\SeasonalEvents\SeasonalEvents'
SeasonalEvents ne garde aucun état entre deux questions : il est sûr dans un worker qui sert plusieurs requêtes.