a-blog cms PHP API Reference

ConfigAccessor
in package
uses FieldTrait

FinalYes

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

Properties

$options

private array{blogId?: int, ruleId?: int, moduleId?: int, configSetId?: int} $options

$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|null

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
Markup

errors()

バリデーション失敗フィールド一覧 (フィールド名 → 失敗メソッド名のリスト)。

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|null

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
group

行ループの配列を返す。

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|null

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
bool

notice()

POST から保存通知 (notice_mess) の生文字列を取得する。

public notice() : string

ACMS_POST_Config が保存後に redirect 経由で post field にセットする値で、 保存後 GET の表示で利用する。値の例: 'saved', 'reset', '' (未保存) など。

Return values
string

persisted()

persisted モード版 ConfigAccessor (POST overload を行わない) を返す。

public persisted() : self

「ユーザー入力ではなく、純粋に保存済みの値だけを参照したい」escape hatch 用途。 通常のフォーム描画では acms_config() のデフォルト (POST overload あり) を使う。

persisted 版でさらに persisted を呼んでも自分自身を返す (終端)。

Return values
self

posted()

直近のリクエストが Config 保存往復だったか。

public posted() : bool

POST シングルトンの 'config' サブフィールドが non-null なら true。

Return values
bool

saved()

保存通知が表示対象かどうか (notice() が非空)。

public saved() : bool
Return values
bool

selected()

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
Markup

string()

単一値を文字列として取得する (軽量経路)。値が無ければ 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|null

valid()

Field 全体が valid か。

public valid() : bool

Field_Validation の場合のみ実際にバリデーション結果を見る。通常 Field では常に true。

Return values
bool

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

子フィールドとして再帰したときの名前(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
Field

buildOverlaidField()

重ね合わせ 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
Field

buildScopedField()

スコープ指定 (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
Field

currentContextField()

メイン PHP が解決した現在コンテキストの Config を複製して返す。

private currentContextField() : Field

Field::singleton('config') はリクエスト全体で共有されるシングルトンで、 Field::overload() は in-place 破壊なので、そのまま返すと後段の applyPostOverload や FieldTrait の処理がグローバル状態を汚染しうる。 複製を返してシングルトンを保護する (applyPostOverload が書き換えるのは トップレベルのフィールドのみなので、子フィールドは共有のままで安全)。

Return values
Field

resolveBuilt()

buildFieldTrait の戻り値を Lazy 取得 (memoize)。

private resolveBuilt() : array<string, mixed>
Return values
array<string, mixed>

resolveField()

重ね合わせ済み Field を Lazy 取得 (memoize)。

private resolveField() : Field
Return values
Field

resolveTemplateUrlsInGroupRowTrait()

グループ内の 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
Return values
array<string|int, mixed>

        
On this page

Search results