但在部份情形下我們會需要在 .env 中使用 array 的陣列參數,應該怎麼做呢?
假設需要設定管理員 e-mail 做為通知用途,如:
.env [email protected]
不過若有多個管理員需要被通知而 .env 並無法設定 array / 陣列 傳入…
我們可以透過下面兩種方法達成這個需求:
方法一:字串分隔
.env [email protected],[email protected],[email protected]
在 config/mail.php 中加入
config/mail.php 'admins_mail' => env('ADMINS_EMAIL') ? array_filter(explode(',', env('ADMINS_EMAIL'))) : [];
之後只要透過 config() 就可以取得 array / 陣列 參數了
config('mail.admins_mail'); # return ['[email protected]', '[email protected]', '[email protected]']
方法二:Json 字串
.env ADMINS_EMAIL=['[email protected]', '[email protected]', '[email protected]']
在 config/mail.php 中加入
config/mail.php 'admins_mail' => json_decode(env('ADMINS_EMAIL'), true) ? : [];
是不是非常簡單啊?
可以用於各種情境與應用哦
當然也別忘了 .env 未設定時的預設值哦
備註:
array_filter()
可以去除 [‘array_1’, ‘array_2’, ”, ‘array_4’] 中的空值,輸出為 [‘array_1’, ‘array_2’, ‘array_4’]
在這裡可以避免 .env ADMINS_EMAIL 中多餘的 “,” 結尾造成陣列中的空值
http://php.net/manual/en/function.array-filter.php
json_decode(string $json, true)
第二個參數中的 true 強制回傳值為 array 而非 object
http://php.net/manual/en/function.json-decode.php
三元運算式 / Ternary Operator
本來的用法:
$my_default_val = $_GET[‘user_input’] ? $_GET[‘user_input’] : ‘set_default_val’;
在 PHP 5.3 之後的版本可以省略前面重覆的部份,例:
$my_default_val = $_GET[‘user_input’] ? : ‘set_default_val’;
不過要注意:如果判斷式中回傳值為 boolean 那省略的部份亦會是 boolean 值,例:
$my_default_val = isset($_GET[‘user_input’]) ? : ‘set_default_val’;
實際試試吧~