InstallerOptions
in package
Installer 実行オプション (不変 DTO)
「空 DB → 使える状態」に必要な情報をまとめる:
- DB 接続情報 (config.server.php に書き込むための値)
- どの bin を投入するか (binName + 関連 bin 自動検出)
- 最初の blog の名前 / code / domain
- admin user の code / name / password / mail
Table of Contents
Constants
- DOMAIN_FORMAT_PATTERN = '@^([a-z0-9]+[a-z0-9-]*(?<=[a-z0-9])\.)+[a-z]+[a-z0-9-]*(?<=[a-z0-9])\.?$|' . '^(?:\d{1,3}\.){3}\d{1,3}$|' . '^localhost$@'
- `Acms\Services\Blog\Helper::isDomain()` の形式チェック部分 (ライセンス判定・DB 参照を除く) と同じ正規表現。ドメイン形式 / IPv4 アドレス / localhost のいずれかを許可する。
Properties
- $adminUserCode : string
- $adminUserMail : string
- $adminUserName : string
- $adminUserPassword : string
- $binName : string
- $blogCode : string|null
- $blogDomain : string|null
- $blogName : string|null
- $dbCharset : string|null
- $dbHost : string|null
- $dbName : string|null
- $dbPassword : string|null
- $dbPort : int|null
- $dbPrefix : string|null
- $dbUser : string|null
- $dryRun : bool
- $rootOnly : bool
- $skipCacheFlush : bool
Methods
- __construct() : mixed
- effectiveBlogDomain() : string
- 実際に使う blog ドメインを返す。
- hasAnyDbOverride() : bool
- DB 設定のいずれかが指定されているか (= config.server.php を書き換える必要があるか)
- toServerConfigValues() : array<string, string|int>
- config.server.php に書き込む define() key => value の配列を作る。 指定されていない値は含まない。
- validateAdminUserCode() : string|null
- 管理者ログイン ID (user_code) のバリデーション。
- validateAdminUserMail() : string|null
- 管理者メールアドレス (user_mail) のバリデーション。
- validateAdminUserName() : string|null
- 管理者表示名 (user_name) のバリデーション。
- validateBlogCode() : string|null
- 最初の blog の code (blog_code) のバリデーション。
- validateBlogDomain() : string|null
- 最初の blog の domain (blog_domain) のバリデーション。
- validateBlogName() : string|null
- 最初の blog の表示名 (blog_name) のバリデーション。
- countCharacters() : int
- `ACMS_Validator::maxlength` と同じ数え方で文字数を数える。 CRLF を 1 文字扱いに正規化してから `mb_strlen` (UTF-8) で数える。
- validate() : void
Constants
DOMAIN_FORMAT_PATTERN
`Acms\Services\Blog\Helper::isDomain()` の形式チェック部分 (ライセンス判定・DB 参照を除く) と同じ正規表現。ドメイン形式 / IPv4 アドレス / localhost のいずれかを許可する。
private
mixed
DOMAIN_FORMAT_PATTERN
= '@^([a-z0-9]+[a-z0-9-]*(?<=[a-z0-9])\.)+[a-z]+[a-z0-9-]*(?<=[a-z0-9])\.?$|' . '^(?:\d{1,3}\.){3}\d{1,3}$|' . '^localhost$@'
Properties
$adminUserCode read-only
public
string
$adminUserCode
$adminUserMail read-only
public
string
$adminUserMail
$adminUserName read-only
public
string
$adminUserName
$adminUserPassword read-only
public
string
$adminUserPassword
$binName read-only
public
string
$binName
$blogCode read-only
public
string|null
$blogCode
= null
$blogDomain read-only
public
string|null
$blogDomain
= null
$blogName read-only
public
string|null
$blogName
= null
$dbCharset read-only
public
string|null
$dbCharset
= null
$dbHost read-only
public
string|null
$dbHost
= null
$dbName read-only
public
string|null
$dbName
= null
$dbPassword read-only
public
string|null
$dbPassword
= null
$dbPort read-only
public
int|null
$dbPort
= null
$dbPrefix read-only
public
string|null
$dbPrefix
= null
$dbUser read-only
public
string|null
$dbUser
= null
$dryRun read-only
public
bool
$dryRun
= false
$rootOnly read-only
public
bool
$rootOnly
= false
$skipCacheFlush read-only
public
bool
$skipCacheFlush
= false
Methods
__construct()
public
__construct(string $binName, string $adminUserCode, string $adminUserName, string $adminUserPassword, string $adminUserMail[, string|null $blogName = null ][, string|null $blogCode = null ][, string|null $blogDomain = null ][, bool $rootOnly = false ][, bool $skipCacheFlush = false ][, bool $dryRun = false ][, string|null $dbHost = null ][, string|null $dbName = null ][, string|null $dbUser = null ][, string|null $dbPassword = null ][, string|null $dbPrefix = null ][, int|null $dbPort = null ][, string|null $dbCharset = null ]) : mixed
Parameters
- $binName : string
- $adminUserCode : string
- $adminUserName : string
- $adminUserPassword : string
- $adminUserMail : string
- $blogName : string|null = null
- $blogCode : string|null = null
- $blogDomain : string|null = null
- $rootOnly : bool = false
- $skipCacheFlush : bool = false
- $dryRun : bool = false
- $dbHost : string|null = null
- $dbName : string|null = null
- $dbUser : string|null = null
- $dbPassword : string|null = null
- $dbPrefix : string|null = null
- $dbPort : int|null = null
- $dbCharset : string|null = null
effectiveBlogDomain()
実際に使う blog ドメインを返す。
public
effectiveBlogDomain([string|null $fallback = null ]) : string
blogDomain 指定が最優先。未指定 (null/空文字) のときは $fallback を採用する。
Installer の呼び出し側が config.server.php の DOMAIN 定数を $fallback に渡す。
Web インストーラ (setup/install.php) は blogDomain: DOMAIN を直接渡すが、
CLI 経由ではユーザが --blog-domain を毎回指定しない運用が想定されるため、
フォールバックを DTO 側で吸収しておくと CLI / Web どちらでも同じ振る舞いになる。
Parameters
- $fallback : string|null = null
Return values
stringhasAnyDbOverride()
DB 設定のいずれかが指定されているか (= config.server.php を書き換える必要があるか)
public
hasAnyDbOverride() : bool
Return values
booltoServerConfigValues()
config.server.php に書き込む define() key => value の配列を作る。 指定されていない値は含まない。
public
toServerConfigValues() : array<string, string|int>
Return values
array<string, string|int>validateAdminUserCode()
管理者ログイン ID (user_code) のバリデーション。
public
static validateAdminUserCode(string $code) : string|null
管理画面の ACMS_POST_User_Insert と同等の規則:
- 必須 / 64 文字以下 / 英数字・ハイフン・アンダースコア のみ
- さらに
isValidCode()(危険なパス記号や制御文字を弾く防御) を通す
戻り値: 妥当なら null、不正ならエラーメッセージ (1 行)。
CLI の対話プロンプトと、非対話ルートの validate() の両方から再利用する。
Parameters
- $code : string
Return values
string|nullvalidateAdminUserMail()
管理者メールアドレス (user_mail) のバリデーション。
public
static validateAdminUserMail(string $mail) : string|null
管理画面と同等: 必須 / 255 文字以下 / メールアドレス形式。
形式チェックには filter_var(FILTER_VALIDATE_EMAIL) を使う (CLI の依存を最小化)。
Parameters
- $mail : string
Return values
string|nullvalidateAdminUserName()
管理者表示名 (user_name) のバリデーション。
public
static validateAdminUserName(string $name) : string|null
管理画面と同等: 必須 / 255 文字以下。
Parameters
- $name : string
Return values
string|nullvalidateBlogCode()
最初の blog の code (blog_code) のバリデーション。
public
static validateBlogCode(string|null $code) : string|null
管理画面の ACMS_POST_Blog_Insert と同等: 255 文字以下 / 予約語と非衝突
(isReserved()) / URL として安全な文字列 (isValidCode())。DB 上の重複チェック
(Blog::isCodeExists()) は稼働中サイトへの追加ブログを前提にした業務ルールであり、
Installer は事前に空 DB であることを保証済み(Installer::assertNoExistingBlog())
のためここには含めない。
未指定 (null/空文字) はドメイン直下運用として妥当なため対象外とする
(ルート blog は Installer 側で常に blog_code を空文字に固定する)。
Parameters
- $code : string|null
Return values
string|nullvalidateBlogDomain()
最初の blog の domain (blog_domain) のバリデーション。
public
static validateBlogDomain(string|null $domain) : string|null
管理画面の ACMS_POST_Blog_Insert と同等の形式チェック (ドメイン形式 / IPv4 / localhost)
のみを行う。Blog::isDomain() が併せて行うライセンス判定・既存ドメインとの重複チェックは、
稼働中サイトへの追加ブログを前提にした業務ルールであり、空 DB への初回インストールには
適用できないためここには含めない。
未指定 (null/空文字) は config.server.php の DOMAIN 定数へフォールバックする仕様
(self::effectiveBlogDomain()) のため対象外とする。
Parameters
- $domain : string|null
Return values
string|nullvalidateBlogName()
最初の blog の表示名 (blog_name) のバリデーション。
public
static validateBlogName(string|null $name) : string|null
管理画面の ACMS_POST_Blog_Insert と同等: 必須 / 255 文字以下。
ただし Installer は未指定 (null/空文字) のとき binName にフォールバックする仕様のため、
ここでの「必須」は適用しない (null/空文字はフォールバックの余地として妥当とする)。
値が指定された場合のみ文字数を検査する。
文字数のカウントは self::countCharacters() を使う。バイト数 (strlen) ではなく
文字数で数えるのは、日本語のブログ名(3 バイト/文字が多い UTF-8)を不当に短く
見積もらないため(ACMS_Validator::maxlength と同じ数え方に揃える)。
戻り値: 妥当なら null、不正ならエラーメッセージ (1 行)。
Parameters
- $name : string|null
Return values
string|nullcountCharacters()
`ACMS_Validator::maxlength` と同じ数え方で文字数を数える。 CRLF を 1 文字扱いに正規化してから `mb_strlen` (UTF-8) で数える。
private
static countCharacters(string $value) : int
Parameters
- $value : string
Return values
intvalidate()
private
validate() : void