피드 및 데이터
핵심 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 | 파일당 레코드 수입니다. 0이면 개수에 따른 분할을 끕니다. |
maxFiles(): int | 0 | 최대 출력 파일 수입니다. 0이면 제한이 없습니다. |
header(): string | XML/RSS용 XML 선언 | 루트와 항목 앞에 기록할 내용입니다. |
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 |