做爲一個 laravel 愛好者讓我寫 tp3.2 我原本是拒絕的,可是呢,拒絕了誰給你工資啊
那怎麼辦呢,既然 laravel 是基於 composer 的組件化開發的,那麼能不能把 laravel 中的功能引入到 tp 中呢php
tp 3.2laravel
測試版和正式版的數據庫通常是不一樣的, 那麼如何方便的切換呢?git
think phpgithub
$db = strpos(getcwd(), 'test') ? 'db_test' : 'db'; define('APP_STATUS',$db);
以前我才用的方法是看當前運行的文件夾是哪一個就加載不一樣的文件,
這種方式的問題是你換了個文件夾名就不行了
做爲 laravel 粉絲確定是使用 env 文件thinkphp
經過看 laravel 的源碼和官網的介紹開始進行改造 tp數據庫
composer require vlucas/phpdotenv
在 thinkphp 根目錄中的 index.php 文件的頭部引入json
require 'vendor/autoload.php' // for use .env $dotenv = new Dotenv\Dotenv(__DIR__); $dotenv->load();
在根目錄新建 .env 文件composer
更多的使用 請參考 phpdotenv 的 github函數
在 composer.json 中組件化
"autoload": { "files": [ "App/helpers.php" ] }
新建 helpers.php
function env($key, $default='undefined') { $value = getenv($key); if ($value === false) { return $default; } switch (strtolower($value)) { case 'true': case '(true)': return true; case 'false': case '(false)': return false; case 'empty': case '(empty)': return ''; case 'null': case '(null)': return; } return $value; }
而後執行
composer dump-autoload
而後就能夠在 Conf 目錄下使用了
env('DB_DATABASE')
這樣配置上基本上就和 laravel 體驗是同樣的了
但這個東西對開發速度提高真的意義不是很大啊, laravel 中最好用的仍是 ORM 啊, 下一篇將會帶來 tp3.2 整合 laravel 的 ORM