a-blog cms PHP API Reference

UploadFieldHandler
in package

AbstractYes

image / file 型カスタムフィールド 1 つ分のアップロード処理を担うハンドラの基底。

両型で共通する道具(候補の正規化・MIME 検証・削除予約のマーキング・生成通知)をここに集約し、 型ごとの差分をサブクラスの handle() に閉じる。

Why not $post を コンストラクタで受け取らない: FieldExtractor は $this->Post =& $app->getPostParameter() と参照で保持しており、takeover 処理で Application 側が POST オブジェクトを差し替える経路がある。ハンドラは コンテナの singleton として一度だけ生成されるため、生成時の POST を抱えると 差し替え後に古いオブジェクトを掴み続ける。呼び出しごとに渡す。

Table of Contents

Properties

$mimeTypeValidator  : MimeTypeValidator
$normalizer  : UploadedFilesNormalizer
$onMediaCreate  : callable(string): void|null
アップロードされたメディアファイルの生成を通知するコールバック(実パスを1引数で受ける)

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

$onMediaCreate

アップロードされたメディアファイルの生成を通知するコールバック(実パスを1引数で受ける)

private callable(string): void|null $onMediaCreate

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 abstract handle(string $fd, Field_Validation $field, Field $post, Field $deleteField, ProcessingFiles $processing, array<int, string> $allowFileExtensions) : void
Parameters
$fd : string

フィールドキー(例: 'photo')

$field : Field_Validation

抽出中のカスタムフィールド

$post : Field

抽出中の POST(参照の所有は FieldExtractor 側)

$deleteField : Field

削除対象として積む Field

$processing : ProcessingFiles

このリクエストでアップロード処理中のファイル(image / file で共有)

$allowFileExtensions : array<int, string>

アップロードを許可する拡張子

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

        
On this page

Search results