【設定ファイルの管理】

はじめに

システム全体に関わるようなデータ(例えばホスト名やポート番号など)は、あらかじめ決められた場所に設定ファイルとして書き出す事が可能で、専用のコマンドを使ってスキャルフォールディングできます。
ファイル形式やデータを取得するヘルパー関数(config)はLaravel環境に合わせてあるので、Laravelとの連携も容易にできます。

※Laravelとの連携方法の詳細は▶Laravelと連携するのページを参照。

設定ファイルは以下のコマンドで作成できます。
> php worker craft:setting test

[success] 設定ファイルの生成に成功しました (test)
                    

コマンドを実行する事でsetting/test.phpというファイルが生成されます。

設定値の使い方

作成されたファイルには次の通り、空の配列のリターン値のみコーディングされています。
return [

];
                    

例えばホスト名やポート番号などを設定ファイルで管理する場合は、以下のように記載します。
return [
    /**
     * @var string ホスト名
     */
    'host' => 'localhost',

    /**
     * @var int ポート番号
     */
    'port' => 10000
];
                    

この設定値を初期状態のメイン処理クラスで実装するには、以下のように記載します。
public function exec()
{
    // ホスト名の取得
    $host = config('test.host', null);

    // ポート番号の取得
    $port = config('test.port', null);

    // ソケットマネージャーのインスタンス設定
    $manager = new SocketManager($host, $port);

    ・
    ・
    ・
}
                    

設定ファイル内の設定値を取得するヘルパー関数(config)はLaravelと同様に扱えるように以下の仕様で実装しています。
【メソッド】config(string $p_key, $p_default = null): mixed

【パラメータ】
    $p_key     - string - 必須 - ファイル名を含めたキー名(ピリオド区切りで指定)
    $p_default - mixed  - 任意 - 値が取得できなかった場合のデフォルト値

【戻り値】mixed - 第一パラメータで指定されたキーに対応する値 or 値が取得できなかった時は第二パラメータの値
                    

コマンドライン引数と併用する場合は以下のようになります。
public function exec()
{
    // ホスト名の取得
    $host = config('test.host', null);

    // コマンドライン引数の指定があればそれを優先する
    $w_ret = $this->getParameter('host');
    if($w_ret !== null)
    {
        $host = $w_ret;
    }

    // ポート番号の取得
    $port = config('test.port', null);

    // コマンドライン引数の指定があればそれを優先する
    $w_ret = $this->getParameter('post');
    if($w_ret !== null)
    {
        $port = $w_ret;
    }

    // ソケットマネージャーのインスタンス設定
    $manager = new SocketManager($host, $port);

    ・
    ・
    ・
}
                    

configヘルパ関数はメイン処理クラス以外の場所でも使えます。