今回は、envファイルと仕組みを作成します。
https://hasethblog.com/it/programming/php/6543/
env(環境変数)ファイル
環境変数ファイルとは、同じ定数をローカルや開発環境、本番環境ごとに別々の値を代入するときに利用します。
例えば、ローカルと本番環境で参照するデータベースは違います。接続情報も異なります。
ソースにベタ書きというのはセキュリティ的にも良くないですし、環境によってソースが違うというのもおかしな話です。
そのため環境によって別々の値を使用する際に使われます。
では早速、環境変数ファイルを作成します。
ファイルを作成する
今回、新規で作成するファイルです。
sns_training ├── app | └── config | ├── .env | └── config.php └── index.php (#5でファイルを作った場合、流用)
app > config の中に .envという隠しファイルとconfig.phpを作成します。
index.phpは環境変数が使用できるか確認用に使用します。
autoloadを使用しているため、フォルダ階層も同じようにしてください。
Composerのautoloadを追加する方法。PHPでSNSを作成してみる#04
では、それぞれのファイルに記述していきます。
.env
TEST=これはテストです。 ENV=local
上の二行のように記します。
config.php
<?php namespace App\Config; /* @Envファイルコネクションクラスです。 */ class config{ public static function getEnv($req){ if($req == null) return; $arr = ""; $envArr = explode("\n",file_get_contents(__DIR__."/.env")); $envVal = []; foreach($envArr as $key => $val){ $arr = explode('=',trim($val)); $envVal += [$arr[0]=>$arr[1]]; } return $envVal[$req]; } } ?>
中身をご説明します。
-
- 【.envファイル】を改行ごと(“\n”)に配列にする
["TEST=これはテストです。","ENV=local"]
- 【1】の配列を”=“ごとに区切り連想配列にする。
[ "TEST"=>"これはテストです。", "ENV"=>"local" ]
- getEnvの引数に一致するキーの値を返す。
$envVal[$req] $req="ENV"とすると$envVal[$req]はlocal。
- 【.envファイル】を改行ごと(“\n”)に配列にする
index.php
この章で記述するindex.phpは一時的な内容です。
<?php require_once "vendor/autoload.php"; use App\Config\config; echo config::getEnv("TEST"); echo "<br>"; echo config::getEnv("ENV"); ?>
出力結果:
これはテストです。 local
同じように出力されたら成功です。
autoloadについては、下記リンクに記してあるのでぜひご参考ください。
Composerのautoloadを追加する方法。PHPでSNSを作成してみる#04
おわりに
今回は、envファイルの作成とデータの取得方法を記しました。
スクラッチ開発ならではの内容だったかと思います。
ローカルはともかく本番環境はクラウドを使用しているケースが多いと思います。
それぞれのクラウドで設定方法を模索する必要がありますね。
ただ、学びたいからといって従量課金のクラウド(AWSやGCP,Azure)を個人で登録するには敷居が高いです。
個人で学ぶには敷居が高い一方でクラウド知識の需要は伸びてきています。
オンプレミスの環境を抜け出し大手クラウドに移行しようとしている企業は多く、
執筆時のタイムリーな内容だと森永乳業の物理サーバ群のAWS移行というニュース。
そんな需要の高まっているクラウドのプロになりませんか?
リクナビNEXTでは、職務経歴や転職希望条件などを匿名で登録しておくと、
求人企業や転職エージェントから直接オファーが来るチャンスもあります。
転職する気はない方も市場価値を知るにはよいツールです。
ぜひ興味のある方は見てみてくださいね。
リクナビNEXTに会員登録をする
以上、ありがとうございました。
コメント