FileFieldHandler
extends UploadFieldHandler
in package
file 型カスタムフィールドのアップロード処理。
テキストファイル(PHP 等のスクリプトの可能性がある)判定・MIME と拡張子の検証・ 保存先パスの確保・旧ファイルの削除予約を担う。
移設前は FieldExtractor::extract() 内の 325 行のブランチだった。 ロジックはそのまま移し、外側のフィールドループを抜ける continue のみ return へ置き換えている。
Table of Contents
Properties
Methods
- __construct() : mixed
- Why not クラス内で ACMS_Hook を直接呼ばない: フック発火はグローバル状態(HookFactory / HOOK_ENABLE)へのアクセスを伴うため、呼び出し側の private メソッドに閉じる規約 (development-guidelines.md「サービス層」)に従う。既定 null は、コンテナを経由せず 直接 new する単体テストのためのフォールバック(フックを発火しない)。
- handle() : void
- 1 フィールド分のアップロード処理を行い、結果を $field / $deleteField に書き込む。
- markFieldFileForRemoval() : void
- 削除チェック・差し替え時に旧ファイルを save() 後に物理削除するよう Field にマーキングする。
- notifyMediaCreated() : void
- メディアファイルが新規に作られたことを通知する。
Properties
$mimeTypeValidator
protected
MimeTypeValidator
$mimeTypeValidator
$normalizer
protected
UploadedFilesNormalizer
$normalizer
Methods
__construct()
Why not クラス内で ACMS_Hook を直接呼ばない: フック発火はグローバル状態(HookFactory / HOOK_ENABLE)へのアクセスを伴うため、呼び出し側の private メソッドに閉じる規約 (development-guidelines.md「サービス層」)に従う。既定 null は、コンテナを経由せず 直接 new する単体テストのためのフォールバック(フックを発火しない)。
public
__construct(UploadedFilesNormalizer $normalizer, MimeTypeValidator $mimeTypeValidator[, callable(string): void|null $onMediaCreate = null ]) : mixed
Parameters
- $normalizer : UploadedFilesNormalizer
- $mimeTypeValidator : MimeTypeValidator
- $onMediaCreate : callable(string): void|null = null
handle()
1 フィールド分のアップロード処理を行い、結果を $field / $deleteField に書き込む。
public
handle(string $fd, Field_Validation $field, Field $post, Field $deleteField, ProcessingFiles $processing, array<string|int, mixed> $allowFileExtensions) : void
Parameters
- $fd : string
-
フィールドキー(例: 'photo')
- $field : Field_Validation
-
抽出中のカスタムフィールド
- $post : Field
-
抽出中の POST(参照の所有は FieldExtractor 側)
- $deleteField : Field
-
削除対象として積む Field
- $processing : ProcessingFiles
-
このリクエストでアップロード処理中のファイル(image / file で共有)
- $allowFileExtensions : array<string|int, mixed>
-
アップロードを許可する拡張子
Tags
markFieldFileForRemoval()
削除チェック・差し替え時に旧ファイルを save() 後に物理削除するよう Field にマーキングする。
protected
markFieldFileForRemoval(Field $field, string $fieldKey, string $relPath, "image"|"file" $type) : void
ここでは即時削除せず、save() の DB 書き込み完了後に FieldFileGarbageCollector が 参照チェックを通してから削除する。
Parameters
- $field : Field
-
extract 中の Field
- $fieldKey : string
-
image/file フィールドの key(例: 'photo')
- $relPath : string
-
archives ディレクトリからの相対パス
- $type : "image"|"file"
notifyMediaCreated()
メディアファイルが新規に作られたことを通知する。
protected
notifyMediaCreated(string $realPath) : void
Parameters
- $realPath : string