Feeds e dados
A API principal separa a fonte de dados, o mapeamento dos itens, os metadados do feed, a estrutura da saída e o resultado da geração.
Feed
DragonCode\LaravelFeed\Feeds\Feed é a classe-base de uma exportação. Implemente builder() e sobrescreva apenas os pontos de saída necessários.
abstract public function builder(): Builder
| Método | Padrão | Contrato |
|---|---|---|
builder(): Builder | Abstrato | Retorna a consulta Eloquent usada como fonte de dados. |
item(Model $model): FeedItem | Novo FeedItem base | Mapeia um modelo para um item de saída. |
transformers(): array | [] | Adiciona no início os transformadores deste feed. |
chunkSize(): int | 1000 | Tamanho do lote da consulta ao banco. |
perFile(): int | 0 | Registros por arquivo. Zero desativa a divisão por quantidade. |
maxFiles(): int | 0 | Máximo de arquivos de saída. Zero não impõe limite. |
header(): string | Declaração XML para XML/RSS | Conteúdo antes da raiz e dos itens. |
footer(): string | String vazia | Conteúdo depois da raiz e dos itens. |
root(): ElementData | Nome derivado da classe | Define o elemento raiz e seus atributos. |
info(): FeedInfo | FeedInfo vazio | Define informações no nível do feed. |
filename(): string | Nome derivado da classe | Retorna o nome de saída relativo ao disco. |
path($suffix): string | Caminho resolvido pelo adaptador | Retorna um caminho local ou resolvido pelo adaptador. |
storagePath($suffix): string | Nome relativo ao disco | Retorna o caminho usado nas operações de armazenamento. |
storage(): FilesystemAdapter | Disco public | Resolve e valida o disco do Laravel. |
format(): FeedFormatEnum | Xml | Retorna o formato de saída configurado. |
Feed usa Conditionable e Macroable do Laravel.
Alvos de feed
DragonCode\LaravelFeed\Feeds\FeedTarget identifica uma saída gerada de forma independente. Seu construtor recebe uma chave string não vazia e um array opcional de parâmetros:
public function __construct(public readonly string $key, public readonly array $parameters = [])
Implemente DragonCode\LaravelFeed\Contracts\HasFeedTargets em uma classe de feed que adote esse recurso. O trait opcional DragonCode\LaravelFeed\Concerns\InteractsWithFeedTargets implementa forTarget() e target(); a classe do feed implementa a descoberta:
| Método | Contrato |
|---|---|
targets(): iterable | Retorna sob demanda todos os FeedTarget disponíveis para execuções completas por comando e agendamento. |
findTarget(string $key): ?FeedTarget | Resolve diretamente um alvo explícito do comando com a mesma chave ou retorna null. |
forTarget(FeedTarget $target): static | Retorna um clone configurado e redefine seu nome de arquivo memorizado. |
target(): FeedTarget | Retorna o alvo configurado ou lança LogicException quando nenhum estiver definido. |
O construtor rejeita chaves vazias ou formadas apenas por espaços, mas não normaliza nem sanitiza outros valores. Os parâmetros do alvo são opacos para o pacote e serializados como um snapshot do job da fila. A chave identifica o alvo e, por isso, deve ser estável e exclusiva dentro da classe do feed. Consulte a configuração de arquivos de saída separados e a seleção de saída no comando.
FeedItem e FeedInfo
FeedItem recebe o modelo Eloquent atual. Por padrão:
name()retorna o nome-base da classe do modelo em kebab case;attributes()retorna um array vazio;toArray()retorna o array do modelo.
FeedInfo::toArray() retorna um array vazio. As duas classes usam Conditionable e Macroable; estenda-as quando a saída exigir um esquema explícito.
ElementData
ElementData é um objeto somente leitura com três propriedades de construtor:
| Propriedade | Tipo | Padrão |
|---|---|---|
name | ?string | null |
attributes | array | [] |
beforeInfo | bool | true |
Defina name como null ou string vazia para omitir a raiz. Defina beforeInfo como false para gravar as informações antes dela.
Resultado da geração
GeneratorService::feed() retorna GenerationResultData. A propriedade somente leitura paths contém os arquivos publicados em ordem. records associa cada caminho à quantidade de registros gravados nesse arquivo.
Os métodos de geração e registro programáticos estão em Serviços e contratos de execução.
FeedFormatEnum
| Caso | Valor |
|---|---|
Xml | xml |
Json | json |
JsonLines | jsonl |
Csv | csv |
Rss | rss |