Zum Hauptinhalt springen

Feeds und Daten

Die Kern-API trennt Datenquelle, Elementabbildung, Metadaten des Feeds, Ausgabestruktur und Generierungsergebnis.

Feed

DragonCode\LaravelFeed\Feeds\Feed ist die Basisklasse eines Exports. Implementieren Sie builder() und überschreiben Sie nur die Ausgabepunkte, die der Feed benötigt.

abstract public function builder(): Builder
MethodeStandardVertrag
builder(): BuilderAbstraktGibt die Eloquent-Abfrage als Datenquelle zurück.
item(Model $model): FeedItemNeues Basis-FeedItemBildet ein Modell auf ein Ausgabeelement ab.
transformers(): array[]Stellt Transformer-Klassennamen für diesen Feed voran.
chunkSize(): int1000Chunk-Größe der Datenbankabfrage.
perFile(): int0Datensätze pro Datei. Null deaktiviert die Aufteilung nach Anzahl.
maxFiles(): int0Maximale Anzahl der Ausgabedateien. Null bedeutet ohne Begrenzung.
header(): stringXML-Deklaration für XML/RSSInhalt vor dem Wurzelelement und den Elementen.
footer(): stringLeere ZeichenfolgeInhalt nach dem Wurzelelement und den Elementen.
root(): ElementDataAus der Klasse abgeleiteter ElementnameDefiniert Wurzelelement und Attribute.
info(): FeedInfoLeeres FeedInfoDefiniert Informationen auf Feed-Ebene.
filename(): stringAus der Klasse abgeleiteter DateinameGibt den datenträgerrelativen Ausgabedateinamen zurück.
path($suffix): stringVom Adapter aufgelöster PfadGibt einen lokalen oder vom Adapter aufgelösten Pfad zurück.
storagePath($suffix): stringDatenträgerrelativer DateinameGibt den Pfad für Speichervorgänge zurück.
storage(): FilesystemAdapterDatenträger publicLöst den Laravel-Datenträger auf und prüft ihn.
format(): FeedFormatEnumXmlGibt das konfigurierte Ausgabeformat zurück.

Feed verwendet Laravel Conditionable und Macroable.

Feed-Ziele

DragonCode\LaravelFeed\Feeds\FeedTarget kennzeichnet eine eigenständig erzeugte Ausgabe. Sein Konstruktor akzeptiert einen nicht leeren Zeichenfolgenschlüssel und ein optionales Parameterarray:

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

Implementieren Sie DragonCode\LaravelFeed\Contracts\HasFeedTargets in einer Feed-Klasse mit expliziter Zielunterstützung. Der optionale Trait DragonCode\LaravelFeed\Concerns\InteractsWithFeedTargets implementiert forTarget() und target(); die Feed-Klasse implementiert die Zielermittlung:

MethodeVertrag
targets(): iterableGibt verzögert jedes verfügbare FeedTarget für vollständige Befehls- und Zeitplanläufe zurück.
findTarget(string $key): ?FeedTargetLöst ein explizites Befehlsziel mit demselben Schlüssel direkt auf oder gibt null zurück.
forTarget(FeedTarget $target): staticGibt einen konfigurierten Klon zurück und setzt dessen zwischengespeicherten Dateinamen zurück.
target(): FeedTargetGibt das konfigurierte Ziel zurück oder löst eine LogicException aus, wenn kein Ziel gesetzt ist.

Der Konstruktor weist leere Schlüssel und Schlüssel nur aus Leerraum zurück, normalisiert oder bereinigt andere Werte jedoch nicht. Zielparameter werden vom Paket nicht ausgewertet und als Snapshot eines Queue-Jobs serialisiert. Der Schlüssel ist die Identität des Ziels und muss daher innerhalb der Feed-Klasse stabil und eindeutig sein. Siehe Einrichtung separater Ausgabedateien und Zielauswahl im Befehl.

FeedItem und FeedInfo

FeedItem erhält das aktuelle Eloquent-Modell. Standardmäßig gilt:

  • name() gibt den Basisnamen der Modellklasse in Kebab-Schreibweise zurück;
  • attributes() gibt ein leeres Array zurück;
  • toArray() gibt das Modellarray zurück.

FeedInfo::toArray() gibt ein leeres Array zurück. Beide Klassen verwenden Conditionable und Macroable; erweitern Sie sie, wenn die Ausgabe ein explizites Schema benötigt.

ElementData

ElementData ist ein schreibgeschütztes Objekt mit drei Konstruktoreigenschaften:

EigenschaftTypStandard
name?stringnull
attributesarray[]
beforeInfobooltrue

Setzen Sie name auf null oder eine leere Zeichenfolge, um das Wurzelelement zu unterdrücken. Setzen Sie beforeInfo auf false, um Feed-Informationen vor das Wurzelelement zu schreiben.

Generierungsergebnis

GeneratorService::feed() gibt GenerationResultData zurück. Die schreibgeschützte Eigenschaft paths enthält die veröffentlichten Dateien in Ausgabereihenfolge. records ordnet jedem Pfad die Anzahl der in diese Datei geschriebenen Datensätze zu.

Methoden zur programmgesteuerten Generierung und Registrierung finden Sie unter Laufzeitdienste und Verträge.

FeedFormatEnum

FallWert
Xmlxml
Jsonjson
JsonLinesjsonl
Csvcsv
Rssrss

Siehe auch