a-blog cms PHP API Reference

UrlResolver
in package

絶対URL / root-relative URL への変換、V2モジュール向けのURL解決を担う。

Table of Contents

Properties

$deliveryUrlRewriter  : DeliveryUrlRewriter

Methods

__construct()  : mixed
convertAssetUrlsToAbsolute()  : string
HTML内のアセット参照(画像・動画・スタイルシート等)を絶対URLに変換する。
convertRelativeUrlToAbsolute()  : string
単一の相対URLを絶対URL(フルURL)に変換する
resolveUrl()  : string
V2モジュール、V2APIビルド時に、URLを絶対URLに変換 それ以外はそのままのURLを返す
toAbsoluteUrl()  : string
URL を完全な absolute URL(scheme + host + path)に変換する。
toRootRelativeUrl()  : string
URL を root-relative URL(`/path` 形式、scheme/host を含まない)に変換する。
extractOrigin()  : string
URI から origin(scheme + host + port)を抽出する。
isAbsoluteUri()  : bool
URL が "absolute URI" として自己解決可能かを判定する。
resolveAgainstBase()  : string
resolveSrcset()  : string
`srcset` 属性値内の各 URL を base URL に対して解決する。

Properties

Methods

convertAssetUrlsToAbsolute()

HTML内のアセット参照(画像・動画・スタイルシート等)を絶対URLに変換する。

public convertAssetUrlsToAbsolute(string $html, string $baseUrl) : string

APIビルド/V2モジュールなどヘッドレス出力向けの正規化。クロスドメインで配信 される API レスポンスでは、フロント(Next.js 等)が別ドメインから取得する都合上、 画像・動画等は CMS ドメインの絶対URLになっている必要がある。

リンク(/)は意図的に一切変換しない。これはフロント側のルーター (Next.js の <Link> など)の解釈に任せるため、および <a href="section/"> の ようなドキュメント相対が CMS のサブパスを引きずって /blog/section/ のように 出力されるのを避けるため。

Parameters
$html : string
$baseUrl : string
Return values
string

convertRelativeUrlToAbsolute()

単一の相対URLを絶対URL(フルURL)に変換する

public convertRelativeUrlToAbsolute(string $url, string $baseUrl) : string
  • 空文字、http(s)://、プロトコル相対 (//)、data: 始まりの URL はそのまま返す
  • / 始まりのルート相対パスは baseUrl のスキーム + ホスト (+ ポート) を前置する
  • それ以外の相対パスは baseUrl 全体を前置する
Parameters
$url : string
$baseUrl : string
Return values
string

resolveUrl()

V2モジュール、V2APIビルド時に、URLを絶対URLに変換 それ以外はそのままのURLを返す

public resolveUrl(string $path[, string $offset = '' ]) : string
Parameters
$path : string
$offset : string = ''
Return values
string

toAbsoluteUrl()

URL を完全な absolute URL(scheme + host + path)に変換する。

public toAbsoluteUrl(string $path[, string $offset = '' ][, string|null $baseUrl = null ]) : string

グローバル状態に依存しない pure 関数($baseUrl を省略した場合のみ BASE_URL を読む)。

  • 既に scheme 付き / protocol-relative の場合はそのまま返す。
  • ルート相対 /foo は base の origin(scheme + host + port)と結合する。 base のサブパス(/site/)は無視される。
  • ドキュメント相対 foo は base 全体(origin + path)と結合する。
Parameters
$path : string

入力パス

$offset : string = ''

URL の前置オフセット(DIR_OFFSET 相当)

$baseUrl : string|null = null

解決の基準とする base URL。null の場合は BASE_URL を使用

Return values
string

toRootRelativeUrl()

URL を root-relative URL(`/path` 形式、scheme/host を含まない)に変換する。

public toRootRelativeUrl(string $path[, string $offset = '' ][, string|null $baseUrl = null ]) : string

V1 / V2 の HTML テンプレート出力で「ブラウザが現在のホストで解決する」前提の URL を生成するときに使う。グローバル状態に依存しない pure 関数($baseUrl を 省略した場合のみ BASE_URL を読む)。

  • 既に scheme 付き / protocol-relative の場合はそのまま返す。
  • ルート相対 /foo はそのまま返す(既に root-relative なので変換不要)。
  • ドキュメント相対 foo は base の path+query 部分のみと結合する。
Parameters
$path : string

入力パス

$offset : string = ''

URL の前置オフセット(DIR_OFFSET 相当)

$baseUrl : string|null = null

解決の基準とする base URL。null の場合は BASE_URL を使用

Return values
string

extractOrigin()

URI から origin(scheme + host + port)を抽出する。

private extractOrigin(Uri|null $uri) : string
Parameters
$uri : Uri|null
Return values
string

isAbsoluteUri()

URL が "absolute URI" として自己解決可能かを判定する。

private isAbsoluteUri(string $url) : bool

以下のいずれかなら true:

  • scheme 付き URI(http(s):, mailto:, tel:, data:, blob:, javascript:, ftp: など)
  • protocol-relative(//host/...)

/foo foo ../foo #anchor ?q=1 '' のような base に対して 解決が必要な参照 は false。「ルート相対 /foo も解決済み扱いにしたい」 のような V1 互換の判定が必要な場合は、呼び出し側で str_starts_with($path, '/') を別途チェックする。

Parameters
$url : string
Return values
bool

resolveAgainstBase()

private resolveAgainstBase(string $url, string $baseUrl) : string
Parameters
$url : string
$baseUrl : string
Return values
string

resolveSrcset()

`srcset` 属性値内の各 URL を base URL に対して解決する。

private resolveSrcset(string $srcset, string $baseUrl) : string

HTML Living Standard §4.8.4.3.2 "parse a srcset attribute" のアルゴリズムに準拠する。 URL は「ASCII whitespace でない連続」として読み取り、カンマでは分割しないため、 データURL内のカンマも誤分割されずに URL の一部として扱われる。

Parameters
$srcset : string

srcset 属性値(例: "/a.jpg 1x, /b.jpg 2x")

$baseUrl : string

解決の基準となる URL

Return values
string —

各 URL を解決した srcset 文字列


        
On this page

Search results