a-blog cms PHP API Reference

SiteSeedServiceProvider extends ServiceProvider
in package

SiteSeed サービスを DI コンテナに登録する

Facade は作らず、呼び出し側は Application::make('site.seed') で取得する。

Table of Contents

Methods

init()  : void
initialize service
register()  : void
register service
resolveBinRootFromAblogcmsRoot()  : string
与えられた ablogcms root 配下から setup の bin ディレクトリを解決する。
defaultBinRoot()  : string
デフォルトの bin ディレクトリを解決する

Methods

resolveBinRootFromAblogcmsRoot()

与えられた ablogcms root 配下から setup の bin ディレクトリを解決する。

public static resolveBinRootFromAblogcmsRoot(string $ablogcmsRoot) : string

setup ディレクトリ名は配布時は setup だが、インストーラの最終ステップ (Install_Step_6) で任意の名前にリネームされる仕様がある。リネーム後でも bin/yaml インポートが動くように、2 段階でディレクトリを解決する。

  1. 自動探索 — $ablogcmsRoot/<dir>/setup-application.php を走査して、ヒットした ディレクトリの bin/ を採用する。setup 実行時限定の定数(旧 SETUP_PATH / SETUP_DIR)に依存しないため、Installer など setup フロー外から呼ばれる場合や、 将来 CLI 経由で呼ばれるようになった場合でも同じロジックで解決できる。 $ablogcmsRoot 自身や探索対象の各ディレクトリが symlink であっても、 LocalStorage::isFile() / isDirectory() は内部で realpath() を通すため 透過的に解決される(symlink 構成のテストは SiteSeedServiceProviderTest 参照)。 マーカーファイルは旧実装では存在しない setup.php を探していたため常に ヒットせず、実質的に 2. のフォールバックのみで動いていた(CMS-7828 で発見)。 setup/{index,import,update,install,fix}.php がいずれも require する setup-application.php に修正した。
  2. フォールバック — リネーム前の標準パス setup/bin/。

前提: 配布物の中で setup-application.php を直下に持つディレクトリは setup 専用 (リネーム 後を含む) のみ、という規約に依存している。

Parameters
$ablogcmsRoot : string
Return values
string

defaultBinRoot()

デフォルトの bin ディレクトリを解決する

private defaultBinRoot() : string

{ablogcms root} は LIB_DIR(config/app.php::setPath() が定義する、リクエストされた パス起点の絶対パス。web / setup / 将来の CLI いずれでも同じ関数で定義され、docroot が symlink 経由でも追従する。UpdateServiceProvider 等と同じ既存の使い方)の親ディレクトリを 使う。旧実装は dirname(__DIR__, 3)(PHP ソースの実体パス、symlink 解決済み)を起点にしており、 docroot が symlink 経由の本番環境では実体側とリクエスト側のパスがズレ、 Installer::install() 実行時だけ「Bin directory not found」になっていた(CMS-7828)。

実際の探索ロジックは self::resolveBinRootFromAblogcmsRoot() に切り出してある (LIB_DIR はテスト側から差し替え不可なグローバル定数のため、探索ロジック自体は任意の ルートを受け取れる形にして symlink 構成を伴うテストを可能にしている)。

Return values
string

        
On this page

Search results