Фіди та дані
Основний API розділяє джерело даних, зіставлення елементів, метадані фіду, структуру виведення та результат генерування.
Feed
DragonCode\LaravelFeed\Feeds\Feed — базовий клас експорту. Реалізуйте builder() і перевизначайте лише ті точки виведення, які потрібні вашому фіду.
abstract public function builder(): Builder
| Метод | Типове значення | Контракт |
|---|---|---|
builder(): Builder | Абстрактний | Повертає запит Eloquent, який використовується як джерело даних. |
item(Model $model): FeedItem | Новий базовий FeedItem | Зіставляє одну модель з елементом виведення. |
transformers(): array | [] | Додає на початок назви класів перетворювачів цього фіду. |
chunkSize(): int | 1000 | Розмір блока запиту до бази даних. |
perFile(): int | 0 | Кількість записів у файлі. Нуль вимикає розділення за кількістю. |
maxFiles(): int | 0 | Максимальна кількість вихідних файлів. Нуль означає відсутність обмеження. |
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(): FeedFormatEnum | Xml | Повертає налаштований формат виведення. |
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 | ?string | null |
attributes | array | [] |
beforeInfo | bool | true |
Установіть name у null або порожній рядок, щоб не виводити кореневий елемент. Установіть beforeInfo у false, щоб записати інформацію фіду перед коренем.
Результат генерування
GeneratorService::feed() повертає GenerationResultData. Його властивість лише для читання paths містить опубліковані файли в порядку виведення. Властивість лише для читання records зіставляє кожен шлях із кількістю записів у відповідному файлі.
Методи програмного генерування та реєстрації наведено в розділі служб і контрактів виконання.
FeedFormatEnum
| Варіант | Значення |
|---|---|
Xml | xml |
Json | json |
JsonLines | jsonl |
Csv | csv |
Rss | rss |