在PHP中管理環境變數
在PHP中管理環境變數
現在我們都能用很多個程式語言開發,當我開始熟悉PHP時,我會忽略其它語言的特點。我用過其他語言(比如Node.js),但在PHP中沒有看到一種輕鬆控制設定環境變數的方法,特別是在開發中。在Node.js中,dotenv庫非常適合這種情況,後來我在PHP中,發現vlucas已經建立了phpdotenv,我準備將這個庫應用到PHP專案中。
管理環境變數
在開發環境下,我們的程式碼應該從本地讀取檔案而不是實裝環境變數中讀取變數。這樣可以更容易地切換專案,我們可以為每個專案編寫一個檔案,不必重新匯出環境變數(或者在切換專案時沒有啟動新的shell,某些環境變數是錯誤的)。另外,可能在為其他人編寫程式碼時,例如示例應用程式或入門工具包,.env檔案中提供了設定所需值的清晰列表。
.env配置檔案
通常,我用兩個檔案:
.env是將從中讀取實際值的檔案。將檔名放入.gitignore,以便在提交時不會將您的實際環境/配置也提交到git中!
.env-example只儲存使用者設定專案所需的鍵,而不包括值。這樣在後面可以輕鬆複製此檔案並把空白值處填寫完整,以使事情順利進行。
請注意,我們也可能需要一些用於生產環境的開關,比如CI框架中系統設定的環境變數,它不用部署.env。
.env檔案內容類似如下所示:
AWESOME_API_KEY=abc123
AWESOME_API_SECRET=abcdef0123456789
如果值已經存在,我們就可以在PHP應用程式使用它們。
PHPdotenv
首先,我們需要使用Composer將phpdotenv包(https://github.com/vlucas/phpdotenv)新增到你的專案中:
composer require vlucas/phpdotenv
然後,在程式碼中新增這樣的東西到index.php的頭部或框架中相關設定的地方(如require “vendor/autoload.php”後可能是一個正確的地方)。程式碼如下:
$dotenv = new DotenvDotenv(__DIR__);
$dotenv->load();
然後,所有變數都可以在自己期望的地方使用,比如$_ENV['AWESOME_API_KEY']。
這樣在開發中使用環境變數就像使用配置檔案一樣簡單,感謝Vance同學建立這個優秀的庫~