Aller au contenu principal

Flux et données

L’API principale sépare la source de données, le mappage des éléments, les métadonnées du flux, la structure de sortie et le résultat de la génération.

Feed

DragonCode\LaravelFeed\Feeds\Feed est la classe de base d’un export. Implémentez builder() et ne remplacez que les points de sortie nécessaires au flux.

abstract public function builder(): Builder
MéthodeValeur par défautContrat
builder(): BuilderAbstraiteRenvoie la requête Eloquent utilisée comme source de données.
item(Model $model): FeedItemNouveau FeedItem de baseTransforme un modèle en élément de sortie.
transformers(): array[]Ajoute en tête les classes de transformateur de ce flux.
chunkSize(): int1000Taille des lots de la requête de base de données.
perFile(): int0Enregistrements par fichier. Zéro désactive le fractionnement par nombre.
maxFiles(): int0Nombre maximal de fichiers. Zéro signifie sans limite.
header(): stringDéclaration XML pour XML/RSSContenu écrit avant la racine et les éléments.
footer(): stringChaîne videContenu écrit après la racine et les éléments.
root(): ElementDataNom dérivé de la classeDéfinit l’élément racine et ses attributs.
info(): FeedInfoFeedInfo videDéfinit les informations du flux.
filename(): stringNom de fichier dérivé de la classeRenvoie le nom de sortie relatif au disque.
path($suffix): stringChemin résolu par l’adaptateurRenvoie un chemin local ou résolu par l’adaptateur.
storagePath($suffix): stringNom relatif au disqueRenvoie le chemin utilisé pour les opérations de stockage.
storage(): FilesystemAdapterDisque publicRésout et valide le disque Laravel.
format(): FeedFormatEnumXmlRenvoie le format de sortie configuré.

Feed utilise Conditionable et Macroable de Laravel.

Cibles de flux

DragonCode\LaravelFeed\Feeds\FeedTarget identifie une sortie générée indépendamment. Son constructeur accepte une clé non vide sous forme de chaîne et un tableau facultatif de paramètres :

public function __construct(public readonly string $key, public readonly array $parameters = [])

Implémentez DragonCode\LaravelFeed\Contracts\HasFeedTargets sur une classe de flux qui active explicitement les cibles. Le trait facultatif DragonCode\LaravelFeed\Concerns\InteractsWithFeedTargets implémente forTarget() et target() ; la classe du flux implémente la découverte des cibles :

MéthodeContrat
targets(): iterableRenvoie de manière différée chaque FeedTarget disponible pour les exécutions complètes de la commande et de la planification.
findTarget(string $key): ?FeedTargetRésout directement une cible explicite de la commande avec la même clé ou renvoie null.
forTarget(FeedTarget $target): staticRenvoie un clone configuré et réinitialise son nom de fichier mémorisé.
target(): FeedTargetRenvoie la cible configurée ou lève une LogicException lorsqu’aucune cible n’est définie.

Le constructeur rejette les clés vides ou composées uniquement de caractères d’espacement, mais ne normalise ni n’assainit les autres valeurs. Les paramètres de la cible sont opaques pour le paquet et sérialisés dans l’instantané d’un job de file d’attente. La clé constitue l’identité de la cible : elle doit donc être stable et unique dans la classe du flux. Consultez la configuration de fichiers de sortie séparés et la sélection dans la commande.

FeedItem et FeedInfo

FeedItem reçoit le modèle Eloquent courant. Par défaut :

  • name() renvoie le nom de base de la classe du modèle en kebab case ;
  • attributes() renvoie un tableau vide ;
  • toArray() renvoie le tableau du modèle.

FeedInfo::toArray() renvoie un tableau vide. Les deux classes utilisent Conditionable et Macroable ; étendez-les si la sortie exige un schéma explicite.

ElementData

ElementData est un objet en lecture seule avec trois propriétés de constructeur :

PropriétéTypeValeur par défaut
name?stringnull
attributesarray[]
beforeInfobooltrue

Définissez name à null ou à une chaîne vide pour supprimer l’élément racine. Définissez beforeInfo à false pour écrire les informations du flux avant la racine.

Résultat de génération

GeneratorService::feed() renvoie GenerationResultData. Sa propriété en lecture seule paths contient les fichiers publiés dans l’ordre de sortie. records associe chaque chemin au nombre d’enregistrements écrits dans ce fichier.

Les méthodes de génération et d’enregistrement programmatiques figurent dans Services et contrats d’exécution.

FeedFormatEnum

CasValeur
Xmlxml
Jsonjson
JsonLinesjsonl
Csvcsv
Rssrss

Voir aussi