WebpConvertRepository
in package
webp_support 有効化前に生成された過去画像を、WebP へ変換する。
対象は指定ディレクトリ配下の jpg/jpeg/png のうち、同名の .webp が まだ存在しないファイルのみ。既に .webp があるファイルは対象外(冪等)。
Table of Contents
Constants
- CONVERT_TARGET_EXTENSIONS = ['jpg', 'jpeg', 'png']
Properties
- $engine : ImageEngine
- $targetDirs : array<string|int, string>
Methods
- __construct() : mixed
- collectTargetFiles() : array<string|int, string>
- 対象ディレクトリを再帰走査し、WebP変換対象ファイルのパス一覧を取得する
- convert() : void
- 1件のファイルをWebPに変換する
- convertAll() : array{success: int, error: int, terminated: bool}
- 対象ファイルをまとめてWebPに変換する
- isConvertTarget() : bool
- 指定パスがWebP変換対象か判定する
- isWebpSupported() : bool
- WebP変換がサポートされている環境か判定する
- walkDirectory() : void
- ディレクトリを再帰走査し、変換対象ファイルを $targets に追記する
Constants
CONVERT_TARGET_EXTENSIONS
private
mixed
CONVERT_TARGET_EXTENSIONS
= ['jpg', 'jpeg', 'png']
Properties
$engine
private
ImageEngine
$engine
$targetDirs
private
array<string|int, string>
$targetDirs
Methods
__construct()
public
__construct(array<string|int, string> $targetDirs[, ImageEngine|null $engine = null ]) : mixed
Parameters
- $targetDirs : array<string|int, string>
-
走査対象のディレクトリ一覧
- $engine : ImageEngine|null = null
-
未指定時は image.engine サービスを使用
collectTargetFiles()
対象ディレクトリを再帰走査し、WebP変換対象ファイルのパス一覧を取得する
public
collectTargetFiles([callable(): bool|null $shouldTerminate = null ]) : array<string|int, string>
Parameters
- $shouldTerminate : callable(): bool|null = null
-
中止要求の判定。走査を途中で打ち切る
Return values
array<string|int, string>convert()
1件のファイルをWebPに変換する
public
convert(string $path) : void
Parameters
- $path : string
convertAll()
対象ファイルをまとめてWebPに変換する
public
convertAll(array<string|int, string> $targets[, callable(): bool|null $shouldTerminate = null ][, callable(int, string): void|null $onProgress = null ][, callable(string, Throwable): void|null $onError = null ]) : array{success: int, error: int, terminated: bool}
1件ごとに $shouldTerminate を評価し、中止要求があればその時点で打ち切る。個別ファイルの 変換失敗は握って次のファイルへ進み、失敗件数として返す。
ロガーや監査ログへの記録をコールバックで受け取るのは、呼び出し元(POSTハンドラ)の グローバル状態に依存せずこのメソッド単体をテストできるようにするため。
Parameters
- $targets : array<string|int, string>
- $shouldTerminate : callable(): bool|null = null
-
中止要求の判定
- $onProgress : callable(int, string): void|null = null
-
変換前の進捗通知(0始まりの連番とパス)
- $onError : callable(string, Throwable): void|null = null
-
変換失敗時の通知
Return values
array{success: int, error: int, terminated: bool}isConvertTarget()
指定パスがWebP変換対象か判定する
public
isConvertTarget(string $path) : bool
Parameters
- $path : string
Return values
boolisWebpSupported()
WebP変換がサポートされている環境か判定する
public
isWebpSupported() : bool
webp_support 設定やGD/ImagickのWebP対応状況によっては、変換を実行しても ImageEngine が例外を投げずに何もしない(後述 copyImageAsWebp 参照)ため、 呼び出し側は本メソッドで事前に判定し、無変換のまま成功扱いにしないこと。
Return values
boolwalkDirectory()
ディレクトリを再帰走査し、変換対象ファイルを $targets に追記する
private
walkDirectory(string $dir, array<string|int, string> &$targets[, callable(): bool|null $shouldTerminate = null ]) : void
Parameters
- $dir : string
- $targets : array<string|int, string>
- $shouldTerminate : callable(): bool|null = null