ConfigAccessor
in package
uses
FieldTrait
Twig 関数 acms_config() の戻り値となる値オブジェクト。
設定画面 Twig から「現在のスコープに対応する重ね合わせ Config Field」を扱う窓口。
設計方針:
- Field オブジェクトは Twig に露出させない (どのメソッドも Field を返さない)
- __toString / Stringable は実装しない (Twig の暗黙文字列化を避ける)
- get / array / string / integer / float / boolean / 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
- $options : array{blogId?: int, ruleId?: int, moduleId?: int, configSetId?: int}
- $persistedCache : ConfigAccessor|null
- $persistedMode : bool
- persisted モード (POST overload を行わないモード) かどうか。
Methods
- __construct() : mixed
- all() : array<string, mixed>
- buildFieldTrait の戻り値全体を返す。
- array() : array<int, mixed>
- 配列値を取得する (軽量経路)。
- boolean() : bool|null
- 単一値を真偽値に変換して取得する (軽量経路, a-blog cms 慣用の on/off 等)。
- checked() : Markup
- input[type=checkbox|radio] の checked 属性を出力する。
- errors() : array<string, array<int, string>>
- バリデーション失敗フィールド一覧 (フィールド名 → 失敗メソッド名のリスト)。
- field() : array<string, mixed>
- buildFieldTrait の 1 件ぶん (キー単位) を返す。
- float() : float|null
- 単一値を浮動小数点数に変換して取得する (軽量経路)。数値でなければ default。
- get() : mixed
- 単一値を取得する (軽量経路)。
- group() : array<int, array<string, mixed>>
- integer() : int|null
- 単一値を整数に変換して取得する (軽量経路)。数値でなければ default。
- 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 属性を出力する。
- string() : string|null
- 単一値を文字列として取得する (軽量経路)。値が無ければ default。
- valid() : bool
- Field 全体が valid か。
- buildFieldTrait() : array<string|int, mixed>|null
- フィールドを連想配列として組み立て
- resolveTemplateUrlsTrait() : array<string|int, mixed>
- toStructured の出力に対し、path フィールドの URL 解決と html フィールドの 絶対化(テンプレート出力固有)を適用する。
- applyPostOverload() : Field
- DB 重ね合わせ済みの Config Field の上に POST.config を最後に overload する。
- buildOverlaidField() : Field
- 重ね合わせ Field を返す。
- buildScopedField() : Field
- スコープ指定 (blogId / ruleId / moduleId / configSetId) に応じた重ね合わせ Field を組み立てる。
- currentContextField() : Field
- メイン PHP が解決した現在コンテキストの Config を複製して返す。
- resolveBuilt() : array<string, mixed>
- buildFieldTrait の戻り値を Lazy 取得 (memoize)。
- resolveField() : Field
- 重ね合わせ済み Field を Lazy 取得 (memoize)。
- resolveTemplateUrlsInGroupRowTrait() : array<string|int, mixed>
- グループ内の 1 行に含まれるマルチ項目(連想配列構造)に対して URL 解決を適用。
- resolveTemplateUrlsInMultiEntryTrait() : array<string|int, mixed>
- マルチ項目フィールドエントリ('value'/'array' を持つ)に対して URL 解決を適用。
Constants
ENCODING
private
mixed
ENCODING
= 'UTF-8'
Properties
$built
private
array<string, mixed>|null
$built
= null
$field
private
Field|null
$field
= null
$options
private
array{blogId?: int, ruleId?: int, moduleId?: int, configSetId?: int}
$options
$persistedCache
private
ConfigAccessor|null
$persistedCache
= null
persisted モードの遅延キャッシュ
$persistedMode
persisted モード (POST overload を行わないモード) かどうか。
private
bool
$persistedMode
= false
Methods
__construct()
public
__construct([array{blogId?: int, ruleId?: int, moduleId?: int, configSetId?: int} $options = [] ]) : mixed
Parameters
- $options : array{blogId?: int, ruleId?: int, moduleId?: int, configSetId?: int} = []
all()
buildFieldTrait の戻り値全体を返す。
public
all() : array<string, mixed>
Return values
array<string, mixed>array()
配列値を取得する (軽量経路)。
public
array(string $key[, bool $strict = false ]) : array<int, mixed>
Parameters
- $key : string
- $strict : bool = false
-
false の場合、末尾の空文字・null・フィールドグループを除いた配列を返す
Return values
array<int, mixed>boolean()
単一値を真偽値に変換して取得する (軽量経路, a-blog cms 慣用の on/off 等)。
public
boolean(string $key[, bool|null $default = null ][, int|null $index = null ]) : bool|null
Parameters
- $key : string
- $default : bool|null = null
- $index : int|null = null
-
配列値の特定要素を取りたい場合に指定
Return values
bool|nullchecked()
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>float()
単一値を浮動小数点数に変換して取得する (軽量経路)。数値でなければ default。
public
float(string $key[, float|null $default = null ][, int|null $index = null ]) : float|null
Parameters
- $key : string
- $default : float|null = null
- $index : int|null = null
-
配列値の特定要素を取りたい場合に指定
Return values
float|nullget()
単一値を取得する (軽量経路)。
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>>integer()
単一値を整数に変換して取得する (軽量経路)。数値でなければ default。
public
integer(string $key[, int|null $default = null ][, int|null $index = null ]) : int|null
Parameters
- $key : string
- $default : int|null = null
- $index : int|null = null
-
配列値の特定要素を取りたい場合に指定
Return values
int|nullinvalid()
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
Markupstring()
単一値を文字列として取得する (軽量経路)。値が無ければ default。
public
string(string $key[, string|null $default = null ][, int|null $index = null ]) : string|null
Parameters
- $key : string
- $default : string|null = null
- $index : int|null = null
-
配列値の特定要素を取りたい場合に指定
Return values
string|nullvalid()
Field 全体が valid か。
public
valid() : bool
Field_Validation の場合のみ実際にバリデーション結果を見る。通常 Field では常に true。
Return values
boolbuildFieldTrait()
フィールドを連想配列として組み立て
protected
buildFieldTrait(Field|Field_Validation $field[, string|null $scp = null ]) : array<string|int, mixed>|null
Parameters
- $field : Field|Field_Validation
- $scp : string|null = null
-
子フィールドとして再帰したときの名前(takeover キーの prefix に使う)
Return values
array<string|int, mixed>|null —フィールドが空の場合は null
resolveTemplateUrlsTrait()
toStructured の出力に対し、path フィールドの URL 解決と html フィールドの 絶対化(テンプレート出力固有)を適用する。
protected
resolveTemplateUrlsTrait(array<string|int, mixed> $data, Field|Field_Validation $field) : array<string|int, mixed>
- マルチ項目フィールド (['value' => {...}, 'array' => [...]]) の中の path / html
- グループ内マルチ項目(連番キーの行配列の中の各 baseName)の path / html
単一値フィールドや、グループ内単一値フィールドには URL 解決を適用しない(旧挙動)。
Parameters
- $data : array<string|int, mixed>
- $field : Field|Field_Validation
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()
重ね合わせ Field を返す。
private
buildOverlaidField(array{blogId?: int, ruleId?: int, moduleId?: int, configSetId?: int} $options) : Field
スコープ指定 (blogId / ruleId / moduleId / configSetId) がある場合は Admin_Config::getConfig 相当に、そのスコープの Config をゼロから組み立てる。 blogId を指定すると、現在のリクエストブログではなく、その指定ブログの保存済み Config を基底にする (サンプルプラグイン等が任意ブログの設定画面を描くための経路)。
スコープ指定がいずれも無い場合は、メイン PHP (Application) が解決済みの
「現在のコンテキストの重ね合わせ Config」(Field::singleton('config')) を
基底に使う。これはブログ・カテゴリー・ルール・コンフィグセットまで反映済みで、
default + loadBlogConfig(BID) の手組みでは取りこぼす解決結果を含む。
Parameters
- $options : array{blogId?: int, ruleId?: int, moduleId?: int, configSetId?: int}
Return values
FieldbuildScopedField()
スコープ指定 (blogId / ruleId / moduleId / configSetId) に応じた重ね合わせ Field を組み立てる。
private
buildScopedField(int|null $blogId, int|null $ruleId, int|null $moduleId, int|null $configSetId) : Field
blogId 未指定時は現在のリクエストブログ (BID) を基底ブログとする。 configSetId を指定するとブログ基底はコンフィグセットで置き換わる (blogId より優先)。
blogId が効くのはブログ基底層 (loadBlogConfig) のみ。rule / module の上書きは Config ファサードが現在リクエストブログ基準で解決する (loadRuleConfig が BID 固定の ため) ので、別ブログの rule / module 設定は blogId では取得できない。
Parameters
- $blogId : int|null
- $ruleId : int|null
- $moduleId : int|null
- $configSetId : int|null
Return values
FieldcurrentContextField()
メイン PHP が解決した現在コンテキストの Config を複製して返す。
private
currentContextField() : Field
Field::singleton('config') はリクエスト全体で共有されるシングルトンで、
Field::overload() は in-place 破壊なので、そのまま返すと後段の
applyPostOverload や FieldTrait の処理がグローバル状態を汚染しうる。
複製を返してシングルトンを保護する (applyPostOverload が書き換えるのは
トップレベルのフィールドのみなので、子フィールドは共有のままで安全)。
Return values
FieldresolveBuilt()
buildFieldTrait の戻り値を Lazy 取得 (memoize)。
private
resolveBuilt() : array<string, mixed>
Return values
array<string, mixed>resolveField()
重ね合わせ済み Field を Lazy 取得 (memoize)。
private
resolveField() : Field
Return values
FieldresolveTemplateUrlsInGroupRowTrait()
グループ内の 1 行に含まれるマルチ項目(連想配列構造)に対して URL 解決を適用。
private
resolveTemplateUrlsInGroupRowTrait(array<string|int, mixed> $row, Field|Field_Validation $field) : array<string|int, mixed>
グループ内単一値は ['value' => x] の形なのでスキップ。 グループ内マルチ項目は ['alt' => x, 'path' => y, ...] の形。
Parameters
- $row : array<string|int, mixed>
- $field : Field|Field_Validation
Return values
array<string|int, mixed>resolveTemplateUrlsInMultiEntryTrait()
マルチ項目フィールドエントリ('value'/'array' を持つ)に対して URL 解決を適用。
private
resolveTemplateUrlsInMultiEntryTrait(array<string|int, mixed> $entry, string $baseName, Field|Field_Validation $field) : array<string|int, mixed>
Parameters
- $entry : array<string|int, mixed>
- $baseName : string
- $field : Field|Field_Validation