RepositoryUrl
in package
FinalYes
アップデート関連 URL(system_update_repository のエンドポイント、update.json の download で取得するパッケージ本体URL)のスキーム判定・変換をまとめた純粋関数群。
呼び出し元(UpdateServiceProvider::register() / CheckForUpdate)はグローバル状態 (config() / AcmsLogger)に依存するため、そこに判定ロジックを埋めるとテストできない。 判定・変換だけをここに切り出し、ログ発火は各呼び出し元に閉じる。
Table of Contents
Constants
- HTTPS_SCHEME = 'https://'
Methods
- enforceHttps() : string
- スキームが http(大文字小文字は区別しない)の場合のみ https:// に読み替える。
Constants
HTTPS_SCHEME
private
string
HTTPS_SCHEME
= 'https://'
Methods
enforceHttps()
スキームが http(大文字小文字は区別しない)の場合のみ https:// に読み替える。
public
static enforceHttps(string $url) : string
Why not: 前方一致文字列比較(stripos($url, 'http://') === 0)では
http:/host/path(スラッシュ1個)のようなスキーム区切りの揺れを読み替えられず
平文のまま素通りする(curl はスラッシュを正規化して http:// として解釈してしまうため)。
parse_url() の PHP_URL_SCHEME を使えば区切りの揺れに関わらずスキーム自体を判定できる。
判定できた場合は scheme 部分を preg_replace で https:// に置き換える
(文字列全体を置換すると、クエリ文字列中の http:// 等意図しない箇所まで書き換えてしまうため)。
Parameters
- $url : string