TP框架之自定义配置

前提介绍

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()方法
此实例中为:将字符串解析为数组

 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的值

结果
image.png

你可能感兴趣的:(TP框架之自定义配置)