Перейти до основного вмісту

Фіди та дані

Основний API розділяє джерело даних, зіставлення елементів, метадані фіду, структуру виведення та результат генерування.

Feed

DragonCode\LaravelFeed\Feeds\Feed — базовий клас експорту. Реалізуйте builder() і перевизначайте лише ті точки виведення, які потрібні вашому фіду.

abstract public function builder(): Builder
МетодТипове значенняКонтракт
builder(): BuilderАбстрактнийПовертає запит Eloquent, який використовується як джерело даних.
item(Model $model): FeedItemНовий базовий FeedItemЗіставляє одну модель з елементом виведення.
transformers(): array[]Додає на початок назви класів перетворювачів цього фіду.
chunkSize(): int1000Розмір блока запиту до бази даних.
perFile(): int0Кількість записів у файлі. Нуль вимикає розділення за кількістю.
maxFiles(): int0Максимальна кількість вихідних файлів. Нуль означає відсутність обмеження.
header(): stringОголошення XML для XML/RSSВміст, який записується перед коренем та елементами.
footer(): stringПорожній рядокВміст, який записується після кореня та елементів.
root(): ElementDataНазва елемента з класуВизначає кореневий елемент і його атрибути.
info(): FeedInfoПорожній FeedInfoВизначає інформацію рівня фіду.
filename(): stringНазва файлу з класуПовертає назву вихідного файлу відносно диска.
path($suffix): stringШлях, визначений адаптеромПовертає локальний або визначений адаптером шлях.
storagePath($suffix): stringНазва файлу відносно дискаПовертає шлях для операцій зі сховищем.
storage(): FilesystemAdapterДиск publicВизначає та перевіряє диск файлової системи Laravel.
format(): FeedFormatEnumXmlПовертає налаштований формат виведення.

Feed використовує засоби Laravel Conditionable і Macroable.

Цілі фіду

DragonCode\LaravelFeed\Feeds\FeedTarget визначає один незалежно згенерований результат. Його конструктор приймає непорожній рядковий ключ і необов'язковий масив параметрів:

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

Реалізуйте DragonCode\LaravelFeed\Contracts\HasFeedTargets у класі фіду, для якого потрібні цілі. Необов'язковий трейт DragonCode\LaravelFeed\Concerns\InteractsWithFeedTargets реалізує forTarget() і target(), а клас фіду — визначення цілей:

МетодКонтракт
targets(): iterableЛіниво повертає всі доступні FeedTarget, коли команда або розклад генерує всі цілі.
findTarget(string $key): ?FeedTargetБезпосередньо визначає одну явно передану команді ціль із тим самим ключем або повертає null.
forTarget(FeedTarget $target): staticПовертає налаштований клон і скидає кешовану назву файлу.
target(): FeedTargetПовертає налаштовану ціль або викидає LogicException, якщо її не задано.

Конструктор відхиляє порожні ключі й ключі лише з пробілів, але не нормалізує та не очищує інші значення. Параметри цілі непрозорі для пакета й серіалізуються як знімок стану завдання черги. Ключ визначає ідентичність цілі, тому має бути стабільним і унікальним у межах класу фіду. Дивіться налаштування окремих вихідних файлів і вибір цілі в команді.

FeedItem і FeedInfo

FeedItem отримує поточну модель Eloquent. Його типові значення:

  • name() повертає базову назву класу моделі у форматі kebab case;
  • attributes() повертає порожній масив;
  • toArray() повертає масив моделі.

FeedInfo::toArray() повертає порожній масив. Обидва класи використовують Conditionable і Macroable; успадковуйте їх, коли виведення потребує явної схеми.

ElementData

ElementData — об'єкт лише для читання з трьома властивостями конструктора:

ВластивістьТипТипове значення
name?stringnull
attributesarray[]
beforeInfobooltrue

Установіть name у null або порожній рядок, щоб не виводити кореневий елемент. Установіть beforeInfo у false, щоб записати інформацію фіду перед коренем.

Результат генерування

GeneratorService::feed() повертає GenerationResultData. Його властивість лише для читання paths містить опубліковані файли в порядку виведення. Властивість лише для читання records зіставляє кожен шлях із кількістю записів у відповідному файлі.

Методи програмного генерування та реєстрації наведено в розділі служб і контрактів виконання.

FeedFormatEnum

ВаріантЗначення
Xmlxml
Jsonjson
JsonLinesjsonl
Csvcsv
Rssrss

Дивіться також