Upgrade to Pro — share decks privately, control downloads, hide ads and more …

"config" ってなんだ? / What is "config"?

"config" ってなんだ? / What is "config"?

2024/04/13 開催の「PHP カンファレンス小田原 2024」(https://phpcon-odawara.jp/ )の LT 資料です。

詳細:https://fortee.jp/phpconodawara-2024/proposal/5021a10a-670e-4d89-b003-d903feb2e365

Shohei Okada

April 13, 2024
Tweet

More Decks by Shohei Okada

Other Decks in Programming

Transcript

  1. 例:マスタデータの ID と名前の対応 <?php return [ 'account_type' => [ 'saving'

    => [ 'id' => 1, 'name' => '普通', ], 'checking' => [ 'id' => 2, 'name' => '当座', ], ], 'other' => [ 'name' => 'その他', ], ];
  2. RDB アプリケーション (コード) SMTP サーバー 暗号鍵 メッセージキュー KVS タイムゾーン config

    によって外界の情報を与えることで 特定の環境でのシステム全体を動作させられる
  3. じゃあ定数はどこに定義すべきか? 表示に関する責務であれば Controller あたり あるいは View とか ViewModel みたいなものがあればそこに <?php

    namespace App\Http\Controllers; class ActivityController extends Controller { private const MAX_PAST_DISPLAY_MONTH = 3; private const OFFICE_AUTHORITY_NAME = 'ウィルゲート'; // 略 } after
  4. じゃあ定数はどこに定義すべきか? <?php return [ 'account_type' => [ 'saving' => [

    'id' => 1, 'name' => '普通', ], 'checking' => [ 'id' => 2, 'name' => '当座', ], ], 'other' => [ 'name' => 'その他', ], ]; before
  5. じゃあ定数はどこに定義すべきか? <?php class Bank { private const ACCOUNT_TYPE_SAVING = [

    'id' => 1, 'name' => '普通', ]; private const ACCOUNT_TYPE_CHECKING = [ 'id' => 2, 'name' => '当座', ]; // 略 } Bank モデルが定義されているならそのクラス定数に → Bank に関する知識をちゃんとモデルに閉じ込めてあげる after - 1
  6. じゃあ定数はどこに定義すべきか? Enum のようなものを使うという手も (PHP の場合は 8.1〜) <?php enum BankAccountType: int

    { case Saving = 1; case Checking = 2; public function name(): string { return match($this) { BankAccountType::Saving => '普通', BankAccountType::Checking => '当座', }; } } after - 2