前提介绍
TP版本为:3.2.3
根据TP配置文件自动加载机制:
在自动加载配置文件时,会调用TP的functions.php里的load_config()方法,通过判断配置文件的后缀,switch选择相应的操作,
function load_config($file, $parse = CONF_PARSE)
{
$ext = pathinfo($file, PATHINFO_EXTENSION);
switch ($ext) {
case 'php':
return include $file;
case 'ini':
return parse_ini_file($file);
case 'yaml':
return yaml_parse_file($file);
case 'xml':
return (array) simplexml_load_file($file);
case 'json':
return json_decode(file_get_contents($file), true);
default:
if (function_exists($parse)) {
return $parse($file);
} else {
E(L('_NOT_SUPPORT_') . ':' . $ext);
}
}
}
PHP parse_str()方法
此实例中为:将字符串解析为数组
<?php
parse_str("name=Bill&age=60",$myArray);
print_r($myArray);
//输出
//Array ( [name] => Bill [age] => 60 )
首先
在index.php入口文件中,添加
// 自定义配置文件的后缀
define('CONF_EXT', '.test');
// 自定义配置文件的解析函数
define('CONF_PARSE', 'parse_test');
然后,花开两朵,各表一枝
1、通用操作(在未自动生成应用模块时,必用)
在TP框架自带functions.php文件中添加
注:路径为:ThinkPHP/Common/functions.php
function parse_test($file)
{
$str = file_get_contents($file);
parse_str($str, $config);
return (array)$config;
}
2、已生成应用模块
可在Common模块下的Common文件下的function.php中添加
注:若已使用通用操作,此操作不可用,会重复定义方法
function parse_test($file)
{
$str = file_get_contents($file);
parse_str($str, $config);
return (array)$config;
}
最后
在公共模块或应用模块的Conf文件夹下创建config.test文件
注:在未自动生成应用模块情况下,无需执行此操作,因为自动生成应用模块时,也会生成相应的config.test配置文件
在config.test文件中,输入
注:格式为 [key]=[value],以&符号作为分割符,parse_test()只支持一维数组
DB_HOST=localhost&DB_NAME=test
测试
获取DB_HOST的值
<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller
{
public function index()
{
echo C('DB_HOST');
}
}