InstallThemeCollector
in package
インストーラーの初期テーマ選択肢を「ファイルシステム宣言」から収集する(拡張ポイント)。
setup 実行時はプラグインの ServiceProvider::init も Hook も発火しない(DB の app テーブル駆動のため)。
よってテーマ候補を足す駆動源はファイルシステム宣言にする必要がある。コアテーマ・拡張テーマとも
setup/bin/<name>/theme.yaml を置くだけで候補になり、収集経路は discover 一本に統一される。
これにより「どのテーマが選択肢に並ぶか」は bin ディレクトリの実在で一元的に決まり、コアテーマの
追加・削除もファイルの増減として現れる(旧来はコア分を coreDefaults として PHP に静的直書きしていた)。
コアテーマの bin は submodule への symlink(site/beginner→utsuwa, develop→develop)なので、その
宣言ファイルは各 submodule 側の bin ディレクトリに同梱する。
ディレクトリ走査・YAML 読込という I/O はここに閉じ、候補の組み立て・整列・検証は InstallThemeCatalog(純粋)に委ねる。
Table of Contents
Constants
- MANIFEST = 'theme.yaml'
- 宣言ファイル名。プラグインは `setup/bin/<name>/theme.yaml` を置くだけで候補を追加できる。
Methods
- catalog() : InstallThemeCatalog
- bin ディレクトリの宣言ファイル走査(discover)だけからテーマカタログを組み立てる。 コアテーマも各 bin の theme.yaml で宣言するため、収集経路は拡張テーマと共通の一本。
- discover() : array<int, array<string, mixed>>
- bin ディレクトリ配下の宣言ファイルを走査し、宣言配列のリストを返す。 `key` 未指定の宣言はディレクトリ名を既定キーにする。`image` は setup ルートからの相対パスに 解決する(下記 resolveImage 参照)。
- resolveImage() : string
- 宣言の `image` を setup ルートからの相対パスに解決する。
Constants
MANIFEST
宣言ファイル名。プラグインは `setup/bin/<name>/theme.yaml` を置くだけで候補を追加できる。
public
mixed
MANIFEST
= 'theme.yaml'
Methods
catalog()
bin ディレクトリの宣言ファイル走査(discover)だけからテーマカタログを組み立てる。 コアテーマも各 bin の theme.yaml で宣言するため、収集経路は拡張テーマと共通の一本。
public
catalog(string $binDir) : InstallThemeCatalog
Parameters
- $binDir : string
Return values
InstallThemeCatalogdiscover()
bin ディレクトリ配下の宣言ファイルを走査し、宣言配列のリストを返す。 `key` 未指定の宣言はディレクトリ名を既定キーにする。`image` は setup ルートからの相対パスに 解決する(下記 resolveImage 参照)。
public
discover(string $binDir) : array<int, array<string, mixed>>
Parameters
- $binDir : string
Return values
array<int, array<string, mixed>>resolveImage()
宣言の `image` を setup ルートからの相対パスに解決する。
private
resolveImage(string $binDir, string $name, mixed $image) : string
テーマ(コア・拡張とも)を setup/bin/<name>/ だけで自己完結させるため、サムネイルは
そのテーマの bin ディレクトリ同梱画像(setup/bin/<name>/<image>)に一本化する。存在すれば
bin/<name>/<image> を返し、無ければ空にする(サムネイル無しで候補自体は出る)。
bloguser.twig は ./<image> で描画する。
Parameters
- $binDir : string
- $name : string
- $image : mixed