Aller au contenu

Installation

phil/listings

Prérequis

PaquetVersionPourquoi
PHP8.5 ou plus récentClasses en lecture seule, constantes typées, array_all(), new sans parenthèses.
ext-mbstringtoutesLes titres et les lieux se comptent en caractères, pas en octets.
psr/clock^1.0Le Responder lit l'instant d'une réponse ou d'une décision sur une horloge PSR-20.

Installer

composer require phil/listings

Déclarer les genres

Chaque genre d'annonce qu'offre l'application a un KindPolicy ; KindPolicies les contient, chaque genre une seule fois.

use Phil\Listings\KindPolicies;
use Phil\Listings\KindPolicy;
use Phil\Listings\ListingKind;
use Phil\Listings\Moderation;

$policies = new KindPolicies([
    KindPolicy::of(ListingKind::of('classified')),
    KindPolicy::of(ListingKind::of('job'), lifetimeDays: 60, moderation: Moderation::BeforePublication, maxOpenResponses: 500),
    KindPolicy::of(ListingKind::of('partner'), minimumAge: 13, reportsToHide: 2),
]);
RègleValeur par défautBornesRôle
lifetimeDays301 à 365La durée de publication d'une annonce, à partir de sa publication.
reminderDays30 à lifetimeDays − 1Le nombre de jours avant l'expiration où l'auteur reçoit un rappel ; 0 pour aucun rappel.
extensionDays301 à 365Le nombre de jours qu'ajoute une prolongation.
maxExtensions30 à 52Le nombre de fois qu'une annonce peut être prolongée.
moderationAfterPublicationModérée avant qu'une annonce soit montrée, ou après, sur signalement.
reportsToHide31 à 100Le nombre de signalements de membres distincts qui masque une annonce publiée.
minimumAgeaucun0 à 120L'âge le plus jeune qui peut répondre ; une annonce peut en demander un plus élevé.
acceptsResponsesouiSi les annonces du genre acceptent des réponses.
maxOpenResponses1001 à 10 000Le nombre de réponses en attente et acceptées que prend une annonce.

Une valeur hors de ses bornes lance InvalidListing, de sorte qu'une politique lue dans la configuration échoue au démarrage de l'application, et non quand un membre publie.

Construire le répondeur

use Phil\Listings\Responder;

$responder = new Responder($policies, $blockList, $memberAges, $responseStore, $clock);

La liste de blocage, l'âge des membres et le stockage des réponses appartiennent à l'application (Points d'extension). Le répondeur ne garde aucun état propre entre les appels : il peut être partagé sans risque entre les requêtes d'un worker de longue durée.