この記事ではLaravelで環境の判別する方法を紹介します。
いくつか方法がありますが、今回の記事では一番効率的で簡単な方法に絞ってご紹介します。
以前別の記事でIP制限の実装をした際に、本番環境とローカル環境で処理を分ける必要がありました。
このように本番とローカル、テスト環境などで処理を分けたいケースがあるかと思います。
その際の判別方法を紹介します。
この記事を読むメリット
- Laravelで環境の判別方法が理解できる
- Laravelの実行環境の取得方法が分かる
Laravelで環境判別をする方法
それでは早速判別方法を紹介します。
// 本番環境だったら
if (app()->isProduction()) {
}
// ローカル環境だったら
if (app()->isLocal()) {
}
// テスト環境だったら
if (app()->runningUnitTests()) {
}
これら3つの関数で環境の判別を行うことができます。
エンジニアにおすすめ書籍
エンジニアになりたて、これから勉強を深めていきたいという方におすすめの書籍はこちら!
実行環境を知る方法
先ほどは環境の判別方法でしたが、実行環境を取得したい場合は以下のようにします。
app()->environment;
=> "local"
これで実行環境を知ることがきます。
Laravelの用意されているサービスコンテナapp()
上記のコードでは「app()」というものを使っていました。
app()はLaravelが用意しているサービスコンテナというものです。
サービスコンテナの概要は以下の記事が参考になりましたので気になる方は参考にしてみてください。
そこに用意されている関数に今まで紹介してきたものが含まれています。
「src/vendor/laravel/framework/src/Illuminate/Foundation/Application.php」に実際の記述があります。
/**
* Determine if the application is in the production environment.
*
* @return bool
*/
public function isProduction()
{
return $this['env'] === 'production';
}
/**
* Determine if the application is in the local environment.
*
* @return bool
*/
public function isLocal()
{
return $this['env'] === 'local';
}
/**
* Determine if the application is running unit tests.
*
* @return bool
*/
public function runningUnitTests()
{
return $this->bound('env') && $this['env'] === 'testing';
}
/**
* Get or check the current application environment.
*
* @param string|array $environments
* @return string|bool
*/
public function environment(...$environments)
{
if (count($environments) > 0) {
$patterns = is_array($environments[0]) ? $environments[0] : $environments;
return Str::is($patterns, $this['env']);
}
return $this['env'];
}
「.env」ファイルの「APP_ENV」の値を見ています。
逆に言えば上のコードのように書いておかないとこれらの関数は期待通りに使えません。
本番環境なら「production」、ローカル環境なら「local」、テスト環境なら「testing」としましょう。
Laravelが用意した便利な関数を使っていこう
いかがだったでしょうか。
簡単に環境の判別、実行環境の取得を行うことができるかと思います。
Laravelは長くPHPのメインフレームワークとして普及しているだけあって多くの便利な関数が存在しています。
まだまだ自分も知らないものが多いと思いうので業務で気になったことなどは積極的に調べる習慣をつけるようにしています。
便利なものがありましたらまた紹介したいと思います。