LibraryProvider
in package
implements
Provider
埋め込みライブラリ(embed/embed)で oEmbed / OGP を解決するコア既定のプロバイダー。
どの URL も対象にするため、レジストリには最後尾の優先度 (ProviderRegistry::LIBRARY_PRIORITY)で登録される。 拡張アプリが追加したプロバイダーが先に解決した場合、ここへは到達しない。
対応サービスはライブラリ同梱のアダプタと、汎用の oEmbed ディスカバリ/OGP 検出に従う。 同梱アダプタに無いサービス(地図・新しい SNS など)は、レジストリへ独自プロバイダーを 登録して対応する設計で、ここにサービス固有の分岐は足さない。
Table of Contents
Interfaces
- Provider
- URL から埋め込み情報を解決するプロバイダー。
Constants
- OEMBED_MAX_HEIGHT = 720
- OEMBED_MAX_WIDTH = 1280
- oEmbed に要求する埋め込みの最大幅・高さ(px)
Methods
- resolve() : EmbedData|null
- 埋め込み情報を解決する
- settings() : array<string, mixed>
- Embed ライブラリへ渡す設定。
- supports() : bool
- どの URL も対象にする(コア既定のフォールバック)
- createEmbed() : Embed
- SSRF ガードを挟んだ Embed インスタンスを組み立てる
Constants
OEMBED_MAX_HEIGHT
public
mixed
OEMBED_MAX_HEIGHT
= 720
OEMBED_MAX_WIDTH
oEmbed に要求する埋め込みの最大幅・高さ(px)
public
mixed
OEMBED_MAX_WIDTH
= 1280
実際の描画幅は表示サイズ(data-width)と CSS(width:100% + aspect-ratio)が決めるため、 ここは「提供元に十分な解像度で返させるための上限値」でしかない。
Why not: maxwidth だけを渡さないのは、YouTube が maxwidth 単独指定では 356x200 までしか 上げてくれず(未指定時は 200x113)、maxheight と併せて初めて要求どおりのサイズを返すため。 16:9 の値にしておくと動画系プロバイダで素直な比率の iframe が得られる。
Methods
resolve()
埋め込み情報を解決する
public
resolve(string $url) : EmbedData|null
Parameters
- $url : string
Return values
EmbedData|null —取得できなければ null
settings()
Embed ライブラリへ渡す設定。
public
settings() : array<string, mixed>
Why not: サイズを指定しないと、YouTube の oEmbed は既定でサムネイル相当の 小さな iframe(200x113)を返し、表示サイズを広げても粗いまま拡大される。 oEmbed の maxwidth / maxheight は「これ以下で返す」という上限指定なので、 実際の描画幅は CSS 側(width:100% + aspect-ratio)が決める。
Return values
array<string, mixed>supports()
どの URL も対象にする(コア既定のフォールバック)
public
supports(string $url) : bool
Parameters
- $url : string
Return values
boolcreateEmbed()
SSRF ガードを挟んだ Embed インスタンスを組み立てる
private
createEmbed() : Embed