前言
作為一個 laravel 愛好者讓我寫 tp3.2 我本來是拒絕的迈着,但是呢去枷,拒絕了誰給你工資啊
那怎么辦呢怖辆,既然 laravel 是基于 composer 的組件化開發(fā)的,那么能不能把 laravel 中的功能引入到 tp 中呢
環(huán)境
tp 3.2
問題
測試版和正式版的數(shù)據(jù)庫一般是不同的, 那么如何方便的切換呢删顶?
- think php
$db = strpos(getcwd(), 'test') ? 'db_test' : 'db';
define('APP_STATUS',$db);
之前我才用的方法是看當(dāng)前運行的文件夾是哪個就加載不同的文件竖螃,
這種方式的問題是你換了個文件夾名就不行了
作為 laravel 粉絲肯定是使用 env 文件
改造
通過看 laravel 的源碼和官網(wǎng)的介紹開始進行改造 tp
step 1
composer require vlucas/phpdotenv
在 thinkphp 根目錄中的 index.php 文件的頭部引入
require 'vendor/autoload.php'
// for use .env
$dotenv = new Dotenv\Dotenv(__DIR__);
$dotenv->load();
step 2
在根目錄新建 .env 文件
更多的使用 請參考 phpdotenv 的 github
使用更像 laravel 的 env 函數(shù)
在 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;
}
然后執(zhí)行
composer dump-autoload
然后就可以在 Conf 目錄下使用了
env('DB_DATABASE')
這樣配置上基本上就和 laravel 體驗是一樣的了
但這個東西對開發(fā)速度提升真的意義不是很大啊, laravel 中最好用的還是 ORM 啊逗余, 下一篇將會帶來 tp3.2 整合 laravel 的 ORM