Provider
in
URL から埋め込み情報を解決するプロバイダー。
コアは埋め込みライブラリ(embed/embed)を包んだプロバイダーを1つだけ登録する。拡張アプリは
自前のプロバイダーを実装し、ServiceProvider::init() などで embed.providers レジストリへ
登録することで、ライブラリが対応していないサービスの埋め込みを追加できる。
返した HTML は呼び出し側(Helper)で必ずサニタイズされる。
プロバイダーはサニタイズを迂回する口ではないため、埋め込み先のホストは別途
extends_html_purifier_iframe_allowed_hosts 等で許可する必要がある。
Table of Contents
Methods
- resolve() : EmbedData|null
- 埋め込み情報を解決する
- supports() : bool
- この URL を自分が解決するか
Methods
resolve()
埋め込み情報を解決する
public
resolve(string $url) : EmbedData|null
取得に失敗した場合は null を返す。null(および全項目が空の結果)のときは後続の プロバイダーへフォールバックするため、「自分が対応するサービスだが今回は取れなかった」 ときも例外ではなく null を返してよい。
HTML は生のまま返す。サニタイズは呼び出し側の責務で、ここで済ませてはいけない (プロバイダーごとにサニタイズ方針がぶれると、許可ホストの単一の情報源が崩れるため)。
Parameters
- $url : string
Return values
EmbedData|nullsupports()
この URL を自分が解決するか
public
supports(string $url) : bool
対象外なら false を返す。判定は URL 文字列だけで完結させ、外部通信は行わないこと (レジストリは登録順に全プロバイダーへ問い合わせるため)。
Parameters
- $url : string