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
| Methode | Standard | Vertrag |
|---|---|---|
builder(): Builder | Abstrakt | Gibt die Eloquent-Abfrage als Datenquelle zurück. |
item(Model $model): FeedItem | Neues Basis-FeedItem | Bildet ein Modell auf ein Ausgabeelement ab. |
transformers(): array | [] | Stellt Transformer-Klassennamen für diesen Feed voran. |
chunkSize(): int | 1000 | Chunk-Größe der Datenbankabfrage. |
perFile(): int | 0 | Datensätze pro Datei. Null deaktiviert die Aufteilung nach Anzahl. |
maxFiles(): int | 0 | Maximale Anzahl der Ausgabedateien. Null bedeutet ohne Begrenzung. |
header(): string | XML-Deklaration für XML/RSS | Inhalt vor dem Wurzelelement und den Elementen. |
footer(): string | Leere Zeichenfolge | Inhalt nach dem Wurzelelement und den Elementen. |
root(): ElementData | Aus der Klasse abgeleiteter Elementname | Definiert Wurzelelement und Attribute. |
info(): FeedInfo | Leeres FeedInfo | Definiert Informationen auf Feed-Ebene. |
filename(): string | Aus der Klasse abgeleiteter Dateiname | Gibt den datenträgerrelativen Ausgabedateinamen zurück. |
path($suffix): string | Vom Adapter aufgelöster Pfad | Gibt einen lokalen oder vom Adapter aufgelösten Pfad zurück. |
storagePath($suffix): string | Datenträgerrelativer Dateiname | Gibt den Pfad für Speichervorgänge zurück. |
storage(): FilesystemAdapter | Datenträger public | Löst den Laravel-Datenträger auf und prüft ihn. |
format(): FeedFormatEnum | Xml | Gibt 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:
| Methode | Vertrag |
|---|---|
targets(): iterable | Gibt verzögert jedes verfügbare FeedTarget für vollständige Befehls- und Zeitplanläufe zurück. |
findTarget(string $key): ?FeedTarget | Löst ein explizites Befehlsziel mit demselben Schlüssel direkt auf oder gibt null zurück. |
forTarget(FeedTarget $target): static | Gibt einen konfigurierten Klon zurück und setzt dessen zwischengespeicherten Dateinamen zurück. |
target(): FeedTarget | Gibt 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:
| Eigenschaft | Typ | Standard |
|---|---|---|
name | ?string | null |
attributes | array | [] |
beforeInfo | bool | true |
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
| Fall | Wert |
|---|---|
Xml | xml |
Json | json |
JsonLines | jsonl |
Csv | csv |
Rss | rss |