본문으로 건너뛰기
버전: 1.x

← 이전 · README로 돌아가기 · 다음 →

지원 형식

  • xml — XML 형식으로 피드를 생성합니다.
  • json — JSON 형식으로 피드를 생성합니다.
  • jsonl — JSON Lines 형식으로 피드를 생성합니다.
  • csv — CSV 형식으로 피드를 생성합니다.
  • rss — RSS Atom 형식으로 피드를 생성합니다.

기본값은 xml 형식입니다.

피드별 변환기 옵션​

피드 클래스에 DragonCode\LaravelFeed\Attributes\Config를 적용하여 해당 변환기 설정을 재정의합니다:

use App\Models\User;
use DragonCode\LaravelFeed\Attributes\Config;
use DragonCode\LaravelFeed\Enums\FeedFormatEnum;
use DragonCode\LaravelFeed\Feeds\Feed;
use Illuminate\Database\Eloquent\Builder;

#[Config('delimiter', ',')]
#[Config('enclosure', "'")]
#[Config('lineEnding', "\r\n")]
class UserFeed extends Feed
{
protected FeedFormatEnum $format = FeedFormatEnum::Csv;

public function builder(): Builder
{
return User::query();
}
}

각 설정마다 속성을 반복하여 적용합니다. 같은 클래스에서 이름을 반복하면 마지막으로 선언한 속성이 적용됩니다.

설정 이름은 변환기 생성자의 매개변수 이름입니다. 지정한 값만 애플리케이션 구성을 재정의하며, 나머지 설정은 구성된 값을 유지합니다. lineEnding은 feeds.converters.csv.line_ending에 해당합니다.

형식지원되는 키
csvdelimiter, enclosure, escape, lineEnding
jsonoptions, pretty
jsonloptions
xml, rsspretty

부모 피드의 옵션을 상속하며, 자식 키는 부모 키를 재정의합니다. 선택한 형식이 지원하는 키만 사용하세요. 지원되지 않는 키는 InvalidArgumentException을 발생시킵니다. 이 속성은 애플리케이션 구성이나 다른 피드를 변경하지 않습니다.

JSON Lines는 항상 한 줄에 하나의 항목을 기록하며, options에서 JSON_PRETTY_PRINT를 제거합니다. 사용자 정의 컨테이너 바인딩은 제공된 생성자 매개변수를 반영해야 합니다.

get() 또는 resolve()를 재정의하는 사용자 정의 DragonCode\LaravelFeed\Helpers\ConverterHelper는 피드별 옵션을 사용하려면 보호된 훅 resolveWithOptions(FeedFormatEnum $format, array $options = []): Converter도 재정의해야 합니다. 변환기를 초기화하기 전에 설정이 적용되도록 $options를 Container::make()에 전달하세요. 그렇지 않으면 옵션이 있는 피드를 해석할 때 LogicException이 발생합니다. 옵션이 없는 피드는 기존 헬퍼 동작을 유지합니다.

관련 문서​