Field
in package
PHP8.2対応以前にシリアライズされたFieldオブジェクトをデシリアライズすると、 PHP8.2以上の環境でエラーが発生するため、 #[\AllowDynamicProperties] を付与している。
Attributes
- #[AllowDynamicProperties]
Table of Contents
Properties
- $_aryChild : array<string, Field>
- $_aryField : array<string, array<string|int, mixed>>
- $_aryMeta : array<string, array<string|int, mixed>>
Methods
- __construct() : mixed
- constructor
- add() : bool
- alias for addField
- addChild() : true
- 指定した名前の子フィールドを設定する
- addField() : bool
- 指定したフィールド名のフィールドに値を追加する
- addGroupRow() : void
- グループに 1 行追加する。
- boolean() : bool|null
- 真偽値に変換して取得する(a-blog cms 慣用)。 - true 扱い : 'on' / '1' / 'true' / 'yes'(大小無視) - false 扱い: 'off' / '0' / 'false' / 'no' / ''(空文字) - キー不在・上記以外 : デフォルト
- cloneWith() : static
- 指定したフィールドをコピーして、新しいオブジェクトを生成します。
- convertValueType() : mixed
- '@' で始まる単一値などをひとまとめにせず純粋な値だけを型変換する。
- defineGroup() : void
- グループに属するフィールド名のリストを宣言する。 '@$groupName' キーに上書きする。既存のフィールドの値はそのまま残る。
- delete() : bool
- alias for deleteField
- deleteField() : bool
- 指定したフィールド名のフィールドを削除する
- deleteGroup() : void
- グループと、それに属する全フィールドを削除する。 宣言外のフィールドには触らない。
- deleteGroupRow() : void
- グループの指定インデックスの行を削除し、後続行を前へ詰める。
- dig() : Field
- 指定されたスコープ名に基づいてフィールド構造を深掘りし、関連するフィールドデータを整理します。
- float() : float|null
- 浮動小数点数に変換して取得する。数値文字列でなければデフォルト。
- fromArray() : static
- toArray() の逆変換。Field::fromArray() は class キーで復元先クラスを選ぶ。 サブクラスの fromArray() は呼び出されたクラスでインスタンスを生成し、内部状態を復元する。
- get() : T is string ? string : false)
- 指定したフィールド名の値を取得する フィールド名に文字列以外を指定した場合はfalseを返す
- getArray() : array<string|int, mixed>
- 指定したフィールド名の値を配列で取得する
- getChild() : Field
- 指定した名前の子フィールドを取得する
- getGroupRows() : array<int, array<string, mixed>>
- グループの全行を連想配列の配列として返す。
- getMeta() : T is non-empty-string ? mixed : array)
- 指定したフィールド名のフィールドに設定されたメタ情報を取得する $keyを指定しない場合は、指定したフィールド名のメタ情報すべてを配列で返す
- integer() : int|null
- 整数に変換して取得する。数値文字列でなければデフォルト。 先頭 0 や指数表記も int 化されるため、電話番号・郵便番号は string() を使うこと。
- isChildExists() : bool
- 指定した名前の子フィールドが存在するかどうかを判定する 名前を指定しない場合は、子フィールドが一つも存在しない場合にtrueを返す
- isExists() : bool
- 指定した名前のフィールドが存在するかどうかを判定する
- isGroup() : bool
- 指定したフィールド名のフィールドがフィールドグループかどうかを判定する
- isGroupKey() : bool
- '@' で始まる「グループ宣言キー」かどうかを判定する。
- isNull() : bool
- 指定したフィールド名のフィールドがnullかどうかを判定する $fdにnullを指定した場合は、フィールドが一つも存在しない場合にtrueを返す
- listChildren() : array<string|int, string>
- 子フィールド名を列挙する
- listFields() : array<string|int, string>
- フィールド名を列挙する
- listGroupFields() : array<string|int, string>
- 指定したグループに属するフィールド名のリストを返す。 未宣言の場合は空配列。
- listGroupNames() : array<string|int, string>
- このフィールドに宣言されているグループ名の配列を返す。 '@xxx' キーの 'xxx' 部分を返す。
- overload() : void
- オブジェクトを上書きする
- parse() : void
- フィールドクエリを解析する
- parseMultiFieldKey() : array{0: string, 1: string}|null
- 'image@path' のような `baseName@subKey` 形式のキーを分解する。 形式に合致しない場合は null。グループ宣言キー('@xxx')も null を返す。
- removeChild() : true
- 指定した名前の子フィールドを削除する
- reset() : true
- retouchCustomUnit() : void
- カスタムユニットのフィールド名と値を調整します。
- serialize() : string
- シリアライズされた文字列を返す
- set() : bool
- フィールドの値を設定する
- setField() : bool
- フィールドの値を設定する
- setGroupRows() : void
- グループの全行を一括差し替えする。
- setMeta() : true
- 指定したフィールド名のフィールドにメタ情報を設定する
- singleton() : Field
- シングルトンパターンでオブジェクトを生成する
- string() : string|null
- 文字列として取得する。値が無ければデフォルト。
- toArray() : array<string, mixed>
- Field の内部状態を「シリアライゼーション用」の構造化配列にダンプする。
- toStructured() : array<string, mixed>
- Field の内部状態を、扱いやすい構造化配列に変換する。
- updateGroupRow() : void
- グループの指定インデックスの行を $row で置き換える。
- restoreFromArray() : static
- fromArray() の復元処理本体。class キーによるディスパッチは行わない。
- buildGroupRows() : array<int, array<string, mixed>>
- グループに属するキー群から行配列を組み立てる。
- buildMultiEntry() : array<string, mixed>
- マルチ項目フィールド(baseName@subKey 形式)のエントリを組み立てる。
- buildSingleEntry() : array<string, mixed>
- 単一値フィールドのエントリを組み立てる。
-
partitionFieldKeys()
: array{0: string[], 1: array
} - フィールドキーのリストを「単一値」「マルチ項目(baseName 別)」に分類する。
- rawScalar() : string|null
- 指定フィールドの生の文字列値を返す。値が無い / 空文字 / 配列なら null。 型付きアクセサ共通の「値あり判定」に使う(boolean だけは空文字を別扱いするため使わない)。
- resolveClassFromArray() : string
- 配列内の 'class' キーから復元先の Field 系クラスを解決する。 class キー未指定なら Field として復元。
Properties
$_aryChild
public
array<string, Field>
$_aryChild
= []
$_aryField
public
array<string, array<string|int, mixed>>
$_aryField
= []
$_aryMeta
public
array<string, array<string|int, mixed>>
$_aryMeta
= []
Methods
__construct()
constructor
public
final __construct([Field|array<string, mixed>|string|null $Field = null ][, bool $isDeep = false ]) : mixed
Parameters
- $Field : Field|array<string, mixed>|string|null = null
- $isDeep : bool = false
add()
alias for addField
public
add(string $fd, array<string|int, mixed>|string|int|float|null $vals) : bool
Parameters
- $fd : string
-
フィールド名
- $vals : array<string|int, mixed>|string|int|float|null
Return values
booladdChild()
指定した名前の子フィールドを設定する
public
addChild(string $name, Field &$Field) : true
Parameters
- $name : string
- $Field : Field
Return values
trueaddField()
指定したフィールド名のフィールドに値を追加する
public
addField(string $fd, array<string|int, mixed>|string|int|float|null $vals) : bool
Parameters
- $fd : string
-
フィールド名
- $vals : array<string|int, mixed>|string|int|float|null
Return values
booladdGroupRow()
グループに 1 行追加する。
public
addGroupRow(string $groupName, array<string, mixed> $row) : void
グループ未宣言なら $row のキー順で自動的に宣言する。 $row に宣言外のキーが含まれていれば InvalidArgumentException。
Parameters
- $groupName : string
- $row : array<string, mixed>
boolean()
真偽値に変換して取得する(a-blog cms 慣用)。 - true 扱い : 'on' / '1' / 'true' / 'yes'(大小無視) - false 扱い: 'off' / '0' / 'false' / 'no' / ''(空文字) - キー不在・上記以外 : デフォルト
public
boolean(string $fd[, bool|null $default = null ][, int $i = 0 ]) : bool|null
Parameters
- $fd : string
- $default : bool|null = null
- $i : int = 0
Return values
bool|nullcloneWith()
指定したフィールドをコピーして、新しいオブジェクトを生成します。
public
cloneWith(array<string|int, string> $fieldNames) : static
Parameters
- $fieldNames : array<string|int, string>
Return values
staticconvertValueType()
'@' で始まる単一値などをひとまとめにせず純粋な値だけを型変換する。
public
static convertValueType(mixed $value) : mixed
- 空文字 / null → null
- 文字列 "true" / "false"(大小文字無視)→ bool
- 数値文字列 → int / float(先頭 0 で 2 文字以上は電話番号・郵便番号扱いで文字列保持)
- それ以外 → 元の値をそのまま返す
Parameters
- $value : mixed
defineGroup()
グループに属するフィールド名のリストを宣言する。 '@$groupName' キーに上書きする。既存のフィールドの値はそのまま残る。
public
defineGroup(string $groupName, array<string|int, string> $fieldNames) : void
Parameters
- $groupName : string
- $fieldNames : array<string|int, string>
delete()
alias for deleteField
public
delete(string $fd) : bool
Parameters
- $fd : string
Return values
booldeleteField()
指定したフィールド名のフィールドを削除する
public
deleteField(string $fd) : bool
Parameters
- $fd : string
Return values
booldeleteGroup()
グループと、それに属する全フィールドを削除する。 宣言外のフィールドには触らない。
public
deleteGroup(string $groupName) : void
Parameters
- $groupName : string
deleteGroupRow()
グループの指定インデックスの行を削除し、後続行を前へ詰める。
public
deleteGroupRow(string $groupName, int $index) : void
インデックスは getGroupRows() のビュー(最大長に揃えた行配列)に対応する。 範囲外のインデックスなら OutOfBoundsException。グループ宣言(@$groupName)自体は 残し、行を全削除した場合は各宣言フィールドが空になる。
Parameters
- $groupName : string
- $index : int
dig()
指定されたスコープ名に基づいてフィールド構造を深掘りし、関連するフィールドデータを整理します。
public
& dig([string $scp = 'field' ]) : Field
指定されたスコープ名の子フィールドを生成または取得し、 そのスコープ内で定義されているフィールドの値を元フィールドから新しい子フィールドに追加します。 返り値として、新しい子フィールドを返します。
Parameters
- $scp : string = 'field'
-
スコープ名
Return values
Field —新たに生成された子フィールドの参照を返す
float()
浮動小数点数に変換して取得する。数値文字列でなければデフォルト。
public
float(string $fd[, float|null $default = null ][, int $i = 0 ]) : float|null
Parameters
- $fd : string
- $default : float|null = null
- $i : int = 0
Return values
float|nullfromArray()
toArray() の逆変換。Field::fromArray() は class キーで復元先クラスを選ぶ。 サブクラスの fromArray() は呼び出されたクラスでインスタンスを生成し、内部状態を復元する。
public
static fromArray(array<string, mixed> $data) : static
Parameters
- $data : array<string, mixed>
Return values
staticget()
指定したフィールド名の値を取得する フィールド名に文字列以外を指定した場合はfalseを返す
public
get(T $fd[, string|int|null $def = null ][, int $i = 0 ]) : T is string ? string : false)
Parameters
- $fd : T
- $def : string|int|null = null
- $i : int = 0
Tags
Return values
T is string ? string : false)getArray()
指定したフィールド名の値を配列で取得する
public
getArray(string $fd[, bool $strict = false ]) : array<string|int, mixed>
Parameters
- $fd : string
- $strict : bool = false
-
falseの場合、空文字、null、フィールドグループを削除した配列を返す。デフォルトはfalse
Return values
array<string|int, mixed>getChild()
指定した名前の子フィールドを取得する
public
& getChild(string $name) : Field
Parameters
- $name : string
Return values
FieldgetGroupRows()
グループの全行を連想配列の配列として返す。
public
getGroupRows(string $groupName[, bool $autoConvert = false ]) : array<int, array<string, mixed>>
フィールドごとに長さがズレている場合は最大長に合わせ、足りない値は空文字で埋める。 $autoConvert が true なら convertValueType() で型変換を適用する。
Parameters
- $groupName : string
- $autoConvert : bool = false
Return values
array<int, array<string, mixed>>getMeta()
指定したフィールド名のフィールドに設定されたメタ情報を取得する $keyを指定しない場合は、指定したフィールド名のメタ情報すべてを配列で返す
public
getMeta(string $fd[, T $key = null ]) : T is non-empty-string ? mixed : array)
Parameters
- $fd : string
-
フィールド名
- $key : T = null
-
メタ情報のキー
Tags
Return values
T is non-empty-string ? mixed : array)integer()
整数に変換して取得する。数値文字列でなければデフォルト。 先頭 0 や指数表記も int 化されるため、電話番号・郵便番号は string() を使うこと。
public
integer(string $fd[, int|null $default = null ][, int $i = 0 ]) : int|null
Parameters
- $fd : string
- $default : int|null = null
- $i : int = 0
Return values
int|nullisChildExists()
指定した名前の子フィールドが存在するかどうかを判定する 名前を指定しない場合は、子フィールドが一つも存在しない場合にtrueを返す
public
isChildExists([string|null $name = null ]) : bool
Parameters
- $name : string|null = null
Return values
boolisExists()
指定した名前のフィールドが存在するかどうかを判定する
public
isExists(string $fd[, int|null $i = null ]) : bool
Parameters
- $fd : string
- $i : int|null = null
Return values
boolisGroup()
指定したフィールド名のフィールドがフィールドグループかどうかを判定する
public
isGroup(string $fd) : bool
Parameters
- $fd : string
Return values
boolisGroupKey()
'@' で始まる「グループ宣言キー」かどうかを判定する。
public
static isGroupKey(string $key) : bool
Parameters
- $key : string
Return values
boolisNull()
指定したフィールド名のフィールドがnullかどうかを判定する $fdにnullを指定した場合は、フィールドが一つも存在しない場合にtrueを返す
public
isNull([string|null $fd = null ][, int $i = 0 ]) : bool
Parameters
- $fd : string|null = null
- $i : int = 0
Return values
boollistChildren()
子フィールド名を列挙する
public
listChildren() : array<string|int, string>
Return values
array<string|int, string>listFields()
フィールド名を列挙する
public
listFields() : array<string|int, string>
Return values
array<string|int, string>listGroupFields()
指定したグループに属するフィールド名のリストを返す。 未宣言の場合は空配列。
public
listGroupFields(string $groupName) : array<string|int, string>
Parameters
- $groupName : string
Return values
array<string|int, string>listGroupNames()
このフィールドに宣言されているグループ名の配列を返す。 '@xxx' キーの 'xxx' 部分を返す。
public
listGroupNames() : array<string|int, string>
Return values
array<string|int, string>overload()
オブジェクトを上書きする
public
overload(Field|array<string, mixed>|string $Field[, bool $isDeep = false ]) : void
Parameters
- $Field : Field|array<string, mixed>|string
- $isDeep : bool = false
parse()
フィールドクエリを解析する
public
parse(string $query) : void
Parameters
- $query : string
parseMultiFieldKey()
'image@path' のような `baseName@subKey` 形式のキーを分解する。 形式に合致しない場合は null。グループ宣言キー('@xxx')も null を返す。
public
static parseMultiFieldKey(string $key) : array{0: string, 1: string}|null
Parameters
- $key : string
Return values
array{0: string, 1: string}|nullremoveChild()
指定した名前の子フィールドを削除する
public
removeChild(mixed $name) : true
Parameters
- $name : mixed
Return values
truereset()
public
reset([bool $isDeep = false ]) : true
Parameters
- $isDeep : bool = false
-
非推奨の引数です。使用しないでください。
Return values
trueretouchCustomUnit()
カスタムユニットのフィールド名と値を調整します。
public
retouchCustomUnit([string $id = '' ]) : void
フィールド名と値のペアを走査し、フィールド名に指定されたIDが含まれている場合に、 そのIDを除去して新しいフィールド名として設定します。IDがフィールド値にも含まれている場合(フィールド名が'@'で始まる場合)、 値に対しても同様の処理を行います。
処理の結果、フィールド名からIDが除去された新しい配列が_aryFieldプロパティに設定されます。
また、メタデータを格納する_aryMetaプロパティは空の配列にリセットされます。
Parameters
- $id : string = ''
-
ユニットID。デフォルトは空文字列です。
serialize()
シリアライズされた文字列を返す
public
serialize() : string
Return values
stringset()
フィールドの値を設定する
public
set(string $fd[, array<string|int, mixed>|string|int|float|null $vals = null ]) : bool
Parameters
- $fd : string
-
フィールド名
- $vals : array<string|int, mixed>|string|int|float|null = null
Return values
boolsetField()
フィールドの値を設定する
public
setField(string $fd[, array<string|int, mixed>|string|int|float|null $vals = null ]) : bool
Parameters
- $fd : string
-
フィールド名
- $vals : array<string|int, mixed>|string|int|float|null = null
Return values
boolsetGroupRows()
グループの全行を一括差し替えする。
public
setGroupRows(string $groupName, array<int, array<string, mixed>> $rows) : void
グループ未宣言で $rows が空でない場合、先頭行のキー順で自動的に宣言する。 各行に宣言外のキーが含まれていれば InvalidArgumentException。
Parameters
- $groupName : string
- $rows : array<int, array<string, mixed>>
setMeta()
指定したフィールド名のフィールドにメタ情報を設定する
public
setMeta(string $fd[, string|null $key = null ][, mixed $val = null ]) : true
Parameters
- $fd : string
-
フィールド名
- $key : string|null = null
-
メタ情報のキー
- $val : mixed = null
-
メタ情報の値
Return values
truesingleton()
シングルトンパターンでオブジェクトを生成する
public
static & singleton(string $key[, null|Field $Field = null ]) : Field
Parameters
- $key : string
- $Field : null|Field = null
Tags
Return values
Fieldstring()
文字列として取得する。値が無ければデフォルト。
public
string(string $fd[, string|null $default = null ][, int $i = 0 ]) : string|null
Parameters
- $fd : string
- $default : string|null = null
- $i : int = 0
Return values
string|nulltoArray()
Field の内部状態を「シリアライゼーション用」の構造化配列にダンプする。
public
toArray() : array<string, mixed>
fromArray() でビット等価に復元できる形式。永続化・転送・JSON 化など、 Field をそのまま「保存して後から復元したい」用途で使う。人間可読な表示用には toStructured() を使うこと。
- class : ダンプ元のクラス名(fromArray() のディスパッチに使う)
- fields : _aryField の生の値(@groupName キーや baseName@subKey 形式の生キーを保持)
- children : 子フィールドを再帰的にダンプ(class キーで型情報も保持)
- meta : _aryMeta の値
Return values
array<string, mixed>toStructured()
Field の内部状態を、扱いやすい構造化配列に変換する。
public
toStructured([bool $autoConvert = true ][, bool $withValidation = false ][, bool $recursive = true ]) : array<string, mixed>
テンプレート描画・V2 API レスポンス・デバッグ表示など、人間が読み書きする用途で 使う。永続化やラウンドトリップ復元には向かないため、その用途では toArray() / fromArray() を使うこと。
- 単一値フィールド : ['value' => x, 'array' => [...]]
- マルチ項目フィールド : ['value' => ['sub' => x, ...], 'array' => [['sub' => x, ...], ...]] (baseName@subKey 形式が同じ baseName でまとまる)
- フィールドグループ : ['groupName' => [0 => [...], 1 => [...]]] (@groupName 宣言の値で zip した行配列)
メディア(@media)・@html・block-editor 等のテンプレート出力固有の前処理は 行わない(FieldTrait 側に残す責務)。URL 解決や HTML 絶対化も同様。
出力形式は Acms\Traits\Utilities\FieldTrait::buildFieldTrait と互換性がある。
Parameters
- $autoConvert : bool = true
-
既定で有効。"true"/"false" → bool、数値 → int/float(先頭 0 は文字列保持)。false にすると生の文字列のまま返す
- $withValidation : bool = false
-
Field_Validation のとき各エントリに 'invalid' / 'v' キーを上乗せ
- $recursive : bool = true
-
子フィールドを toStructured した結果を合流させる
Return values
array<string, mixed>updateGroupRow()
グループの指定インデックスの行を $row で置き換える。
public
updateGroupRow(string $groupName, int $index, array<string, mixed> $row) : void
インデックスは getGroupRows() のビュー(最大長に揃えた行配列)に対応する。 addGroupRow() と同じ全置換セマンティクスで、$row に含まれない宣言フィールドは 空文字で更新される(部分更新ではない)。宣言外のキーが含まれていれば InvalidArgumentException、範囲外のインデックスなら OutOfBoundsException。
Parameters
- $groupName : string
- $index : int
- $row : array<string, mixed>
restoreFromArray()
fromArray() の復元処理本体。class キーによるディスパッチは行わない。
protected
static restoreFromArray(array<string, mixed> $data) : static
Parameters
- $data : array<string, mixed>
Return values
staticbuildGroupRows()
グループに属するキー群から行配列を組み立てる。
private
buildGroupRows(array<string|int, string> $belongs, bool $autoConvert, bool $withValidation) : array<int, array<string, mixed>>
Parameters
- $belongs : array<string|int, string>
- $autoConvert : bool
- $withValidation : bool
Return values
array<int, array<string, mixed>>buildMultiEntry()
マルチ項目フィールド(baseName@subKey 形式)のエントリを組み立てる。
private
buildMultiEntry(string $baseName, array<string|int, string> $subKeys, bool $autoConvert, bool $withValidation) : array<string, mixed>
Parameters
- $baseName : string
- $subKeys : array<string|int, string>
- $autoConvert : bool
- $withValidation : bool
Return values
array<string, mixed>buildSingleEntry()
単一値フィールドのエントリを組み立てる。
private
buildSingleEntry(string $key, bool $autoConvert, bool $withValidation) : array<string, mixed>
Parameters
- $key : string
- $autoConvert : bool
- $withValidation : bool
Return values
array<string, mixed>partitionFieldKeys()
フィールドキーのリストを「単一値」「マルチ項目(baseName 別)」に分類する。
private
static partitionFieldKeys(array<string|int, string> $keys) : array{0: string[], 1: array}
Parameters
- $keys : array<string|int, string>
Return values
array{0: string[], 1: arrayrawScalar()
指定フィールドの生の文字列値を返す。値が無い / 空文字 / 配列なら null。 型付きアクセサ共通の「値あり判定」に使う(boolean だけは空文字を別扱いするため使わない)。
private
rawScalar(string $fd, int $i) : string|null
Parameters
- $fd : string
- $i : int
Return values
string|nullresolveClassFromArray()
配列内の 'class' キーから復元先の Field 系クラスを解決する。 class キー未指定なら Field として復元。
private
static resolveClassFromArray(array<string, mixed> $data) : string
Parameters
- $data : array<string, mixed>