はじめに

Laravel の実行環境を確認する方法をまとめた

TL;DR

  • app('env'), app()->environment(), App::environment() で現在の実行環境(文字列)の取得
  • app()->environment('xxxx'), App::environment('xxxx') で指定値との一致確認(bool)
    • 引数は複数指定可(どれかと一致すれば true)
  • isLocal()runningUnitTests() なども利用可能
  • view ファイルでは カスタム if 文 を定義して使うのがよい

目次

  1. はじめに
  2. TL;DR
  3. 環境・条件
  4. 詳細
    1. 環境判別 方法
    2. view ファイルでの判別
  5. まとめ
  6. 参考文献

環境・条件

1
2
3
4
5
6
7
8
9
10
11
12
$ grep -i pretty /etc/os-release
PRETTY_NAME="Ubuntu 16.04.3 LTS"

$ php -v
PHP 7.2.22-1+ubuntu16.04.1+deb.sury.org+1 (cli) (built: Sep 2 2019 12:54:12) ( NTS )

$ composer -V
Composer version 1.9.0 2019-08-02 20:55:32

$ composer info laravel/framework
name : laravel/framework
versions : * v5.7.28

詳細

環境判別 方法

app('env'), app()->environment(), App::environment()isLocal(), runningUnitTests() などで判別が可能。

environment() には複数の引数を指定できる。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// 実行環境は local
>>> app('env')
=> "local"

>>> app()->environment()
=> "local"

>>> app()->environment('local')
=> true

>>> app()->environment('production')
=> false

// 複数指定時は、どれか一致すれば true
>>> app()->environment('production', 'local')
=> true

// App::envrironment() も同じ挙動
>>> App::environment()
=> "local"

>>> App::environment('local')
=> true

>>> App::environment('production')
=> false

>>> App::environment('production', 'local')
=> true

// その他のメソッド
>>> app()->isLocal()
=> true

>>> app()->runningUnitTests()
=> false

view ファイルでの判別

素直に書くと下記。

1
2
3
@if (app()->environment('local'))
@elseif (app()->environment('staging'))
@endif

上記のようにも指定できるが、カスタム if 文 を定義すると楽になる。

app/Providers/AppServiceProvider.phpboot メソッドを編集。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php

namespace App\Providers;

use Illuminate\Support\Facades\Blade;
use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
public function boot()
{
Blade::if('env', function ($environment = 'local') {
return app()->environment($environment);
});
}
}

これで下記のように書けるようになる。

1
2
3
@env  // local
@elseenv ('staging')
@endenv

まとめ

  • app('env'), app()->environment(), App::environment() で現在の実行環境(文字列)の取得
  • app()->environment('xxxx'), App::environment('xxxx') で指定値との一致確認(bool)
    • 引数は複数指定可(どれかと一致すれば true)
  • isLocal()runningUnitTests() なども利用可能
  • view ファイルでは カスタム if 文 を定義して使うのがよい

参考文献

関連記事