Фиды и данные
Основной 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 |