ConfigAccessor
in package
uses
FieldTrait
Twig 関数 acms_config() の戻り値となる値オブジェクト。
設定画面 Twig から「現在のスコープに対応する重ね合わせ Config Field」を扱う窓口。
設計方針:
- Field オブジェクトは Twig に露出させない (どのメソッドも Field を返さない)
- __toString / Stringable は実装しない (Twig の暗黙文字列化を避ける)
- get / array / selected / checked は Field からの直取得 (軽量経路)
- field / group / all / invalid は FieldTrait::buildFieldTrait の戻り値を返す
- Field と built は同インスタンス内でのみ Lazy + memoize
値の取得は POST 値 overload あり をデフォルトとする (Symfony Form / Rails / Django と
同じ「フォーム描画時は submitted 優先」哲学)。永続化済みの値だけ取りたい場合は
cfg.persisted で POST overload を行わない別アクセサを取得する。
Table of Contents
Constants
- ENCODING = 'UTF-8'
Properties
- $built : array<string, mixed>|null
- $field : Field|null
- $opts : array{ruleId?: int, moduleId?: int, configSetId?: int, scope?: string}
- $persistedCache : ConfigAccessor|null
- $persistedMode : bool
- persisted モード (POST overload を行わないモード) かどうか。
Methods
- __construct() : mixed
- all() : array<string, mixed>
- buildFieldTrait の戻り値全体を返す。
- array() : array<int, mixed>
- 配列値を取得する (軽量経路)。
- checked() : Markup
- input[type=checkbox|radio] の checked 属性を出力する。
- errors() : array<string, array<int, string>>
- バリデーション失敗フィールド一覧 (フィールド名 → 失敗メソッド名のリスト)。
- field() : array<string, mixed>
- buildFieldTrait の 1 件ぶん (キー単位) を返す。
- get() : mixed
- 単一値を取得する (軽量経路)。
- group() : array<int, array<string, mixed>>
- invalid() : bool
- Field_Validation 経由のバリデーションエラーを問い合わせる。
- notice() : string
- POST から保存通知 (notice_mess) の生文字列を取得する。
- persisted() : self
- persisted モード版 ConfigAccessor (POST overload を行わない) を返す。
- posted() : bool
- 直近のリクエストが Config 保存往復だったか。
- saved() : bool
- 保存通知が表示対象かどうか (notice() が非空)。
- selected() : Markup
- select 要素の selected 属性を出力する。
- valid() : bool
- Field 全体が valid か。
- autoConvertTypeTrait() : array<string|int, mixed>
- 自動で型変換
- buildBasicFieldGroupTrait() : array<string|int, mixed>
- 基本カスタムフィールドグループを組み立て
- buildBasicFieldTrait() : array<string|int, mixed>
- 基本カスタムフィールドを組み立て
- buildFieldTrait() : array<string|int, mixed>|null
- フィールドを連想配列として組み立て
- buildMultiFieldGroupTrait() : array<string|int, mixed>
- 複数項目をもつカスタムフィールドグループを組み立て
- buildMultiFieldTrait() : array<string|int, mixed>
- 複数項目をもつカスタムフィールドを組み立て
- extractGroupFieldKeysTrait() : array<string|int, mixed>
- グループフィールドのキーを抜き出す
- extractNonGroupFieldKeysTrait() : array<string|int, mixed>
- グループフィールドのキーを除いてキーを取得
- formatFieldKeysTrait() : array<string|int, mixed>
- フィールドキー配列を整形
- applyPostOverload() : Field
- DB 重ね合わせ済みの Config Field の上に POST.config を最後に overload する。
- buildOverlaidField() : Field
- Admin_Config::getConfig 相当の重ね合わせ Field を返す。
- convertFieldValueTypeTrait() : mixed
- 単一のフィールド値を適切な型に変換する (電話番号・郵便番号など先頭0を保持する値は文字列のまま返す)
- convertNumericFieldValueTrait() : int|float|string
- 数値文字列を int/float に変換する 先頭が0で2文字以上の場合は文字列のまま(電話番号・郵便番号等を保持)
- isBooleanStringTrait() : bool
- ブール文字列("true" / "false")かどうか
- resolveBuilt() : array<string, mixed>
- buildFieldTrait の戻り値を Lazy 取得 (memoize)。
- resolveField() : Field
- 重ね合わせ済み Field を Lazy 取得 (memoize)。
Constants
ENCODING
private
mixed
ENCODING
= 'UTF-8'
Properties
$built
private
array<string, mixed>|null
$built
= null
$field
private
Field|null
$field
= null
$opts
private
array{ruleId?: int, moduleId?: int, configSetId?: int, scope?: string}
$opts
$persistedCache
private
ConfigAccessor|null
$persistedCache
= null
persisted モードの遅延キャッシュ
$persistedMode
persisted モード (POST overload を行わないモード) かどうか。
private
bool
$persistedMode
= false
Methods
__construct()
public
__construct([array{ruleId?: int, moduleId?: int, configSetId?: int, scope?: string} $opts = [] ]) : mixed
Parameters
- $opts : array{ruleId?: int, moduleId?: int, configSetId?: int, scope?: string} = []
all()
buildFieldTrait の戻り値全体を返す。
public
all() : array<string, mixed>
Return values
array<string, mixed>array()
配列値を取得する (軽量経路)。
public
array(string $key) : array<int, mixed>
Parameters
- $key : string
Return values
array<int, mixed>checked()
input[type=checkbox|radio] の checked 属性を出力する。
public
checked(string $key, string $value[, int|null $index = null ]) : Markup
Parameters
- $key : string
- $value : string
- $index : int|null = null
Return values
Markuperrors()
バリデーション失敗フィールド一覧 (フィールド名 → 失敗メソッド名のリスト)。
public
errors() : array<string, array<int, string>>
集計ロジックは Field_Validation::getInvalidMethods に閉じている (ドメイン側の
責務)。Twig 側ではフィールド名だけ欲しい場合 cfg.errors|keys で取れる。
Return values
array<string, array<int, string>>field()
buildFieldTrait の 1 件ぶん (キー単位) を返す。
public
field(string $key) : array<string, mixed>
存在しないキーは ['value' => null, 'array' => []] を返す。
Parameters
- $key : string
Return values
array<string, mixed>get()
単一値を取得する (軽量経路)。
public
get(string $key[, mixed $default = null ][, int|null $index = null ]) : mixed
Parameters
- $key : string
- $default : mixed = null
- $index : int|null = null
-
配列値の特定要素を取りたい場合に指定
group()
public
group(string $name) : array<int, array<string, mixed>>
Parameters
- $name : string
Tags
Return values
array<int, array<string, mixed>>invalid()
Field_Validation 経由のバリデーションエラーを問い合わせる。
public
invalid(string $key[, string|null $method = null ][, int|null $index = null ]) : bool
Parameters
- $key : string
- $method : string|null = null
-
個別メソッドの失敗を見たい場合に指定 (例: 'required')
- $index : int|null = null
-
グループ内 index
Return values
boolnotice()
POST から保存通知 (notice_mess) の生文字列を取得する。
public
notice() : string
ACMS_POST_Config が保存後に redirect 経由で post field にセットする値で、 保存後 GET の表示で利用する。値の例: 'saved', 'reset', '' (未保存) など。
Return values
stringpersisted()
persisted モード版 ConfigAccessor (POST overload を行わない) を返す。
public
persisted() : self
「ユーザー入力ではなく、純粋に保存済みの値だけを参照したい」escape hatch 用途。
通常のフォーム描画では acms_config() のデフォルト (POST overload あり) を使う。
persisted 版でさらに persisted を呼んでも自分自身を返す (終端)。
Return values
selfposted()
直近のリクエストが Config 保存往復だったか。
public
posted() : bool
POST シングルトンの 'config' サブフィールドが non-null なら true。
Return values
boolsaved()
保存通知が表示対象かどうか (notice() が非空)。
public
saved() : bool
Return values
boolselected()
select 要素の selected 属性を出力する。
public
selected(string $key, string $value[, int|null $index = null ]) : Markup
戻り値は Twig\Markup でラップしているため autoescape をバイパスする。
Parameters
- $key : string
- $value : string
- $index : int|null = null
Return values
Markupvalid()
Field 全体が valid か。
public
valid() : bool
Field_Validation の場合のみ実際にバリデーション結果を見る。通常 Field では常に true。
Return values
boolautoConvertTypeTrait()
自動で型変換
protected
autoConvertTypeTrait(array<string|int, mixed> $values) : array<string|int, mixed>
Parameters
- $values : array<string|int, mixed>
Return values
array<string|int, mixed>buildBasicFieldGroupTrait()
基本カスタムフィールドグループを組み立て
protected
buildBasicFieldGroupTrait(array<string|int, mixed> $keys, Field|Field_Validation $field, array<string|int, mixed> $initial) : array<string|int, mixed>
Parameters
- $keys : array<string|int, mixed>
- $field : Field|Field_Validation
- $initial : array<string|int, mixed>
Return values
array<string|int, mixed>buildBasicFieldTrait()
基本カスタムフィールドを組み立て
protected
buildBasicFieldTrait(array<string|int, mixed> $keys, Field|Field_Validation $field, array<string|int, mixed> $initial) : array<string|int, mixed>
Parameters
- $keys : array<string|int, mixed>
- $field : Field|Field_Validation
- $initial : array<string|int, mixed>
Return values
array<string|int, mixed>buildFieldTrait()
フィールドを連想配列として組み立て
protected
buildFieldTrait(Field|Field_Validation $field[, string|null $scp = null ]) : array<string|int, mixed>|null
Parameters
- $field : Field|Field_Validation
- $scp : string|null = null
Return values
array<string|int, mixed>|nullbuildMultiFieldGroupTrait()
複数項目をもつカスタムフィールドグループを組み立て
protected
buildMultiFieldGroupTrait(array<string|int, mixed> $items, Field|Field_Validation $field, array<string|int, mixed> $initial) : array<string|int, mixed>
Parameters
- $items : array<string|int, mixed>
- $field : Field|Field_Validation
- $initial : array<string|int, mixed>
Return values
array<string|int, mixed>buildMultiFieldTrait()
複数項目をもつカスタムフィールドを組み立て
protected
buildMultiFieldTrait(array<string|int, mixed> $items, Field|Field_Validation $field, array<string|int, mixed> $initial) : array<string|int, mixed>
Parameters
- $items : array<string|int, mixed>
- $field : Field|Field_Validation
- $initial : array<string|int, mixed>
Return values
array<string|int, mixed>extractGroupFieldKeysTrait()
グループフィールドのキーを抜き出す
protected
extractGroupFieldKeysTrait(Field|Field_Validation $field, array<string|int, mixed> $fieldKeys) : array<string|int, mixed>
Parameters
- $field : Field|Field_Validation
- $fieldKeys : array<string|int, mixed>
Return values
array<string|int, mixed>extractNonGroupFieldKeysTrait()
グループフィールドのキーを除いてキーを取得
protected
extractNonGroupFieldKeysTrait(array<string|int, mixed> $fieldKeys, array<string|int, mixed> $groupKeys) : array<string|int, mixed>
Parameters
- $fieldKeys : array<string|int, mixed>
- $groupKeys : array<string|int, mixed>
Return values
array<string|int, mixed>formatFieldKeysTrait()
フィールドキー配列を整形
protected
formatFieldKeysTrait(array<string|int, mixed> $fieldKeys) : array<string|int, mixed>
Parameters
- $fieldKeys : array<string|int, mixed>
Return values
array<string|int, mixed>applyPostOverload()
DB 重ね合わせ済みの Config Field の上に POST.config を最後に overload する。
private
applyPostOverload(Field $config) : Field
Symfony Form / Rails と同じく「フォーム描画では submitted を最優先」する哲学。 バリデーションエラーで再描画されたときにユーザー入力を保持できる。
POST が Field_Validation 由来なら、後段で valid()/errors() が動くように Field_Validation 側を最終 Field として返す (config-side も逆 overload する)。
Parameters
- $config : Field
Return values
FieldbuildOverlaidField()
Admin_Config::getConfig 相当の重ね合わせ Field を返す。
private
buildOverlaidField(array{ruleId?: int, moduleId?: int, configSetId?: int, scope?: string} $opts) : Field
Phase 5.9 で Acms\Services\Config\Helper の薄いラッパーに切り出して Admin_Config と共通利用する。それまでは ConfigAccessor 内で直接組み立てる。
Parameters
- $opts : array{ruleId?: int, moduleId?: int, configSetId?: int, scope?: string}
Return values
FieldconvertFieldValueTypeTrait()
単一のフィールド値を適切な型に変換する (電話番号・郵便番号など先頭0を保持する値は文字列のまま返す)
private
convertFieldValueTypeTrait(mixed $value) : mixed
Parameters
- $value : mixed
convertNumericFieldValueTrait()
数値文字列を int/float に変換する 先頭が0で2文字以上の場合は文字列のまま(電話番号・郵便番号等を保持)
private
convertNumericFieldValueTrait(string|int|float $value) : int|float|string
Parameters
- $value : string|int|float
Return values
int|float|stringisBooleanStringTrait()
ブール文字列("true" / "false")かどうか
private
isBooleanStringTrait(mixed $value) : bool
Parameters
- $value : mixed
Return values
boolresolveBuilt()
buildFieldTrait の戻り値を Lazy 取得 (memoize)。
private
resolveBuilt() : array<string, mixed>
Return values
array<string, mixed>resolveField()
重ね合わせ済み Field を Lazy 取得 (memoize)。
private
resolveField() : Field