ページビューの合計

2138

2023年2月17日金曜日

Laravel: 独自設定を読み込む

またENVネタです。

キャッシュは

  • 本番環境では高速のため実行すべき
  • 開発環境では頻繁に変わる可能性があるので実行すべきではない

とのことでした。
とは言ってもいざ本番環境でエラーになることがないように開発環境でもどこかのタイミングで実行はして確認しておくのが良いでしょう。

ただ設定のキャッシュって結局はプロジェクトフォルダ\bootstrap\cach\config.phpを作ってるだけで別にメモリ上にあるわけでもなさそうです。
そんなに効果あるんだろうか?と思いました。

少し古い版ですが高速化検証した記事がありました。
Laravel 5.6の高速化検証・artisanコマンド3つのキャッシュ

実行時間が30%ほども少なくなりましたとのことです。
意外と効果ありますね。本番環境では実行しておいた方が良いでしょう。
本番環境ではデプロイ時に自動的に実行するような仕組みを考えた方が良さそうです。

独自の設定項目

今回のネタはこっからです。
設定ファイルはアプリやプロジェクト独自の項目を設定することもあるはず。

手順的には

  1. .envに他と重複しないキーと設定値を書く
  2. configの下にファイルを追加して、そのファイルの中でenv()を使って値を取得するように実装する
  3. アプリからconfig()を使って値を取得する。


こんな感じでしょうか。

じゃ一覧画面のページネーションの数を設定できる感じにします。
.envで以下のように書いておきます。

  PAGINATION=50

configの下にmyconfig.phpというファイルを作って
内部でenv()を使って取得しておきます。
  1. <?php
  2.  
  3. return [
  4.  
  5. /*
  6. |--------------------------------------------------------------------------
  7. | Pagination settings
  8. |--------------------------------------------------------------------------
  9. |
  10. | Here, set the number of items to be displayed on the screen of the list screen.
  11. |
  12. */
  13.  
  14. 'pagination' => env('PAGINATION', 10),
  15.  
  16. ];
 
アプリからは以下のように$config_value = config('myconfig.pagination');
といった感じで値が参照できるはず。
  1. <body class="antialiased">
  2. <p>Test get original setting values</p>
  3. @php
  4. $env_value = env('PAGINATION', 'NotFound');
  5. $config_value = config('myconfig.pagination');
  6. @endphp
  7. <h1>DB_CONNECTION(env): {{ $env_value }}</h1>
  8. <h1>DB_CONNECTION(config): {{ $config_value }}</h1>
  9. </body>


想定した通りに値が取れてますね。

わざとキーを変えて存在しないものにすると、それぞれデフォルトを表示しています。


0 件のコメント:

コメントを投稿

Laravel再学習

フロントエンド系の方に興味が行っていましたがまたバックエンド系に戻ってきました。 Laravelです。 かなり忘れてます、自分のブログを見ながらもう一度です。 今回はMVCパターン、そして Eloquentを使えるようになるのが目的です。 まずはプロジェクト作成から 1. Com...