Перайсці да асноўнага змесціва
Версія: 1.x

Стужкі і даныя

Асноўны 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Вяртае наладжаны фармат вываду.
converterOptions(): array[]Вяртае ўспадкаваныя значэнні атрыбута Config для гэтай стужкі; даччыныя ключы перавызначаюць бацькоўскія.

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; пашырайце іх, калі вываду патрэбна яўная схема.

Фармат дат элемента​

Дадайце #[DateFormat('Y-m-d H:i')] з DragonCode\LaravelFeed\Attributes\DateFormat да класа FeedItem, каб перавызначыць яго фармат дат.

Вяртайце зыходныя значэнні DateTimeInterface з toArray() і наладзьце пераўтварэнне дат у мадэлі. Папярэдне адфарматаваныя радкі не фарматуюцца нанова:

namespace App\Feeds\Items;

use DragonCode\LaravelFeed\Attributes\DateFormat;
use DragonCode\LaravelFeed\Feeds\Items\FeedItem;

#[DateFormat('Y-m-d H:i')]
class ProductFeedItem extends FeedItem
{
public function toArray(): array
{
return [
'finishedAt' => $this->model->finished_at,
'createdAt' => $this->model->created_at,
'updatedAt' => $this->model->updated_at,
];
}
}

Атрыбут дзейнічае ў кожным фармаце вываду, у тым ліку для дат ва ўкладзеных структурах JSON/XML і дат, якія вяртае attributes() для атрыбутаў элементаў XML/RSS.

Найбліжэйшы бацькоўскі клас з атрыбутам задае атрыманы ў спадчыну фармат; атрыбут у даччыным класе перавызначае яго. Атрыбут мае прыярытэт над фарматамі дат стужкі і глабальнымі фарматамі, захоўваючы feeds.date.timezone.

FeedInfo, атрыбуты каранёвага элемента і іншыя элементы без гэтага атрыбута выкарыстоўваюць звычайны наладжаны ланцужок пераўтварэнняў.

ElementData​

ElementData — аб'ект толькі для чытання з трыма ўласцівасцямі канструктара:

УласцівасцьТыпСтандартнае значэнне
name?stringnull
attributesarray[]
beforeInfobooltrue

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

Вынік генерацыі​

GeneratorService::feed() вяртае GenerationResultData. Уласцівасць толькі для чытання paths змяшчае апублікаваныя файлы ў парадку вываду. Уласцівасць records супастаўляе кожнаму шляху колькасць запісаў у файле.

Метады праграмнай генерацыі і рэгістрацыі пералічаны ў сэрвісах і кантрактах выканання.

FeedFormatEnum​

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

Глядзіце таксама​