Aller au contenu

Points d'extension

phil/reservation

La bibliothèque est du PHP simple : elle ne déclare aucun service, et ses classes sont finales. Ce que l'application choisit passe par deux ports et par des arguments.

PointComment
Quand une ressource est ouverteImplémentez Phil\Reservation\Contract\Availability : les plages ouvertes qui croisent une période, dans l'ordre, celles qui se touchent réunies ; jours fériés, heures d'ouverture conservées ailleurs, horaire partagé
Ce qu'une réservation doit suivreImplémentez Phil\Reservation\Contract\Rule : le quota d'un titulaire, un rôle, un prix ; elle renvoie une Violation ou null
Ce par rapport à quoi une réservation est vérifiéeLes Booking passés à check(), free() et slots() : l'application décide lesquels comptent, les réservations confirmées et les retenues non expirées
Déplacer une réservationL'identifiant $replacing de BookingRequest et de free()
L'horlogeLe $requestedAt de BookingRequest et le $now de slots() et de ReminderSchedule::due() : la bibliothèque ne lit jamais l'heure elle-même
Les messages, dans toute langueÉcrits par l'application à partir des valeurs de ViolationCode et des paramètres de chaque violation ; la bibliothèque n'en écrit aucun
Le nombre de créneaux lusLa $limit de slots(), dans la limite de Bookable::MAX_SLOTS
L'interception des erreurs de la bibliothèqueChaque exception implémente Phil\Reservation\Exception\ReservationException

Une règle propre à l'application reçoit la demande et le fuseau horaire de la ressource, et ne garde aucun état entre les appels : un seul Bookable sert ainsi chaque requête d'un worker de longue durée.