SchemaDefinitions
in package
FinalYes
Schema が参照するスキーマ定義 (yaml をパース済みの array) を運ぶ値オブジェクト。
Schema 本体は「現 DB と定義の差分を扱う」責務だけに集中させ、yaml ソースの違い (本体だけ / 拡張アプリだけ / カスタムディレクトリ) は本クラスの factory に閉じ込める。
使い分け:
- 既存の本体まわり (CMS 全体のスキーマ) : SchemaDefinitions::fromConfig()
- 拡張アプリの専有テーブル管理など : SchemaDefinitions::fromYaml($dir)
Table of Contents
Properties
- $engine : array<string|int, mixed>
- $index : array<string|int, mixed>
- $rename : array<string|int, mixed>
- $schema : array<string|int, mixed>
Methods
- __construct() : mixed
- fromConfig() : self
- 本体 (ablogcms/php/config/schema/) と拡張 (ablogcms/extension/schema/) を Config::getDataBaseSchemaInfo() 経由でマージ済みの状態で読み込む。
- fromYaml() : self
- 任意のディレクトリから db.{type}.yaml を読み込む (拡張アプリ専用テーブル用)。
- loadYamlOrEmpty() : array<string, mixed>
Properties
$engine read-only
public
array<string|int, mixed>
$engine
= []
$index read-only
public
array<string|int, mixed>
$index
= []
$rename read-only
public
array<string|int, mixed>
$rename
= []
$schema read-only
public
array<string|int, mixed>
$schema
Methods
__construct()
public
__construct(array<string, mixed> $schema[, array<string, mixed> $index = [] ][, array<string, mixed> $rename = [] ][, array<string, mixed> $engine = [] ]) : mixed
Parameters
- $schema : array<string, mixed>
-
テーブル/カラム定義
- $index : array<string, mixed> = []
-
インデックス定義
- $rename : array<string, mixed> = []
-
リネーム定義
- $engine : array<string, mixed> = []
-
ストレージエンジン定義
fromConfig()
本体 (ablogcms/php/config/schema/) と拡張 (ablogcms/extension/schema/) を Config::getDataBaseSchemaInfo() 経由でマージ済みの状態で読み込む。
public
static fromConfig() : self
Schema のコンストラクタでデフォルト動作として使われる。
Return values
selffromYaml()
任意のディレクトリから db.{type}.yaml を読み込む (拡張アプリ専用テーブル用)。
public
static fromYaml(string $dir) : self
指定 dir 配下の以下のファイルを読み、存在しないものは空配列として扱う。
- db.schema.yaml
- db.index.yaml
- db.rename.yaml
- db.engine.yaml
yaml 内の %{PREFIX} プレースホルダは DB_PREFIX 定数で置換する (本体 yaml と同じ流儀)。
Parameters
- $dir : string
Return values
selfloadYamlOrEmpty()
private
static loadYamlOrEmpty(string $path) : array<string, mixed>
Parameters
- $path : string