示例:
默认配置文件在application/config.php
惯例配置文件在thinkphp/convention.php
在index目录下新建config.php
使用dump(\think\Config::get());输出所有配置项
自定义配置
在public/index.php中定义配置目录
// +----------------------------------------------------------------------
// [ 应用入口文件 ]
// 定义应用目录
define('APP_PATH', __DIR__ . '/../application/');
// 定义配置目录
define('CONF_PATH', __DIR__ . '/../config/');
// 加载框架引导文件
require __DIR__ . '/../thinkphp/start.php';
在项目中新建config文件夹(与application同级),在此文件夹下新建文件config.php
true,
'aite_name'=>'php学习',
];
更改现有配置项和新增自定义配置项
在config文件夹下新建index文件夹,在此文件夹下新建config.php与index模块绑定
扩展配置目录
在config文件夹下新建extra文件夹,在此文件夹下新建my_base.php文件
'wybing',
'my_age'=>28,
'my_sex'=>'男',
];
也可以在index模块下新建extra文件夹,在此文件夹下新建config.php文件
'wybing.com',
];
array(69) {
["app_host"] => string(0) ""
["app_debug"] => bool(false)
["app_trace"] => bool(true)
["app_status"] => string(0) ""
["app_multi_module"] => bool(true)
["auto_bind_module"] => bool(false)
["root_namespace"] => array(0) {
}
["extra_file_list"] => array(1) {
[0] => string(56) "D:\myphp_www\PHPTutorial\WWW\phpTest\thinkphp\helper.php"
}
["default_return_type"] => string(4) "html"
["default_ajax_return"] => string(4) "json"
["default_jsonp_handler"] => string(11) "jsonpReturn"
["var_jsonp_handler"] => string(8) "callback"
["default_timezone"] => string(3) "PRC"
["lang_switch_on"] => bool(false)
["default_filter"] => string(0) ""
["default_lang"] => string(5) "zh-cn"
["class_suffix"] => bool(false)
["controller_suffix"] => bool(false)
["default_module"] => string(5) "index"
["deny_module_list"] => array(1) {
[0] => string(6) "common"
}
["default_controller"] => string(5) "Index"
["default_action"] => string(5) "index"
["default_validate"] => string(0) ""
["empty_controller"] => string(5) "Error"
["use_action_prefix"] => bool(false)
["action_suffix"] => string(0) ""
["controller_auto_search"] => bool(false)
["var_pathinfo"] => string(1) "s"
["pathinfo_fetch"] => array(3) {
[0] => string(14) "ORIG_PATH_INFO"
[1] => string(18) "REDIRECT_PATH_INFO"
[2] => string(12) "REDIRECT_URL"
}
["pathinfo_depr"] => string(1) "/"
["https_agent_name"] => string(0) ""
["url_html_suffix"] => string(4) "html"
["url_common_param"] => bool(false)
["url_param_type"] => int(0)
["url_route_on"] => bool(true)
["route_config_file"] => array(1) {
[0] => string(5) "route"
}
["route_complete_match"] => bool(false)
["url_route_must"] => bool(false)
["url_domain_deploy"] => bool(false)
["url_domain_root"] => string(0) ""
["url_convert"] => bool(true)
["url_controller_layer"] => string(10) "controller"
["var_method"] => string(7) "_method"
["var_ajax"] => string(5) "_ajax"
["var_pjax"] => string(5) "_pjax"
["request_cache"] => bool(false)
["request_cache_expire"] => NULL
["request_cache_except"] => array(0) {
}
["template"] => array(10) {
["auto_rule"] => int(1)
["type"] => string(5) "Think"
["view_base"] => string(0) ""
["view_path"] => string(0) ""
["view_suffix"] => string(4) "html"
["view_depr"] => string(1) "\"
["tpl_begin"] => string(1) "{"
["tpl_end"] => string(1) "}"
["taglib_begin"] => string(1) "{"
["taglib_end"] => string(1) "}"
}
["view_replace_str"] => array(0) {
}
["dispatch_success_tmpl"] => string(67) "D:\myphp_www\PHPTutorial\WWW\phpTest\thinkphp\tpl\dispatch_jump.tpl"
["dispatch_error_tmpl"] => string(67) "D:\myphp_www\PHPTutorial\WWW\phpTest\thinkphp\tpl\dispatch_jump.tpl"
["exception_tmpl"] => string(69) "D:\myphp_www\PHPTutorial\WWW\phpTest\thinkphp\tpl\think_exception.tpl"
["error_message"] => string(33) "椤甸潰閿欒锛佽绋嶅悗鍐嶈瘯锝�"
["show_error_msg"] => bool(false)
["exception_handle"] => string(0) ""
["record_trace"] => bool(false)
["log"] => array(3) {
["type"] => string(4) "File"
["path"] => string(49) "D:\myphp_www\PHPTutorial\WWW\phpTest\runtime\log\"
["level"] => array(0) {
}
}
["trace"] => array(1) {
["type"] => string(4) "Html"
}
["cache"] => array(4) {
["type"] => string(4) "File"
["path"] => string(51) "D:\myphp_www\PHPTutorial\WWW\phpTest\runtime\cache\"
["prefix"] => string(0) ""
["expire"] => int(0)
}
["session"] => array(7) {
["id"] => string(0) ""
["var_session_id"] => string(0) ""
["prefix"] => string(5) "think"
["type"] => string(0) ""
["auto_start"] => bool(true)
["httponly"] => bool(true)
["secure"] => bool(false)
}
["cookie"] => array(7) {
["prefix"] => string(0) ""
["expire"] => int(0)
["path"] => string(1) "/"
["domain"] => string(0) ""
["secure"] => bool(false)
["httponly"] => string(0) ""
["setcookie"] => bool(true)
}
["database"] => array(20) {
["type"] => string(5) "mysql"
["dsn"] => string(0) ""
["hostname"] => string(9) "127.0.0.1"
["database"] => string(0) ""
["username"] => string(4) "root"
["password"] => string(0) ""
["hostport"] => string(0) ""
["params"] => array(0) {
}
["charset"] => string(4) "utf8"
["prefix"] => string(0) ""
["debug"] => bool(false)
["deploy"] => int(0)
["rw_separate"] => bool(false)
["master_num"] => int(1)
["slave_no"] => string(0) ""
["fields_strict"] => bool(true)
["resultset_type"] => string(5) "array"
["auto_timestamp"] => bool(false)
["datetime_format"] => string(11) "Y-m-d H:i:s"
["sql_explain"] => bool(false)
}
["paginate"] => array(3) {
["type"] => string(9) "bootstrap"
["var_page"] => string(4) "page"
["list_rows"] => int(15)
}
["console"] => array(3) {
["name"] => string(13) "Think Console"
["version"] => string(3) "0.1"
["user"] => NULL
}
["aite_name"] => string(9) "php瀛︿範"
["my_base"] => array(3) {
["my_name"] => string(6) "wybing"
["my_age"] => int(28)
["my_sex"] => string(3) "鐢�"
}
["my_name"] => string(6) "wybing"
["test"] => array(1) {
["site_name"] => string(10) "wybing.com"
}
}
Array数组键值对——默认格式
ini名值对——入口文件:defina('CONF_EXT','.ini')
xml标签对——入口文件:defina('CONF_EXT','.xml')
json对象属性名值对——入口文件:defina('CONF_EXT','.json')
ini名值对
在public/index.php文件中定义文件配置类型
// +----------------------------------------------------------------------
// [ 应用入口文件 ]
// 定义应用目录
define('APP_PATH', __DIR__ . '/../application/');
// 定义配置目录
define('CONF_PATH', __DIR__ . '/../config/');
//定义配置文件类型
define('CONF_EXT','.ini');
// 加载框架引导文件
require __DIR__ . '/../thinkphp/start.php';
在config文件夹下新建config.ini配置文件
my_name=peter ;这是注释
my_salary=4000
在public/index.php文件中定义文件配置类型,把ini改为xml,新增config.xml
湖南省
程序员
在public/index.php文件中定义文件配置类型,把ini改为json,新增config.json
{
"my_name":"wybing",
"my_age":22,
"my_sex":"男"
}
最多用的是数组。
1.必要性:
在不同的环境下,使用不同的配置项。例如在家中和公司中,使用的数据库有可能是不一样的,那么就可以为这两个不同的环境创建不同的数据库连接配置。
2.实现步骤
1.修改应用或模块配置文件中的:'app_status',将值设置为场景名称,如:Home
2.在与该配置文件同级的目录下,创建与场景名称同名的配置文件,如:home.php
3.再次执行,将会自动根据场景配置文件(home.php),更新当前应用的配置文件。
在Config/config.php下设置
'app_status'=>'home',
在Config文件夹下新建home.php文件
'mysql',
// 服务器地址
'hostname' => '127.0.0.1',
// 数据库名
'database' => 'wybing',
// 用户名
'username' => 'root',
// 密码
'password' => 'root',
// 端口
'hostport' => '',
// 连接dsn
'dsn' => '',
// 数据库连接参数
'params' => [],
// 数据库编码默认采用utf8
'charset' => 'utf8',
// 数据库表前缀
'prefix' => '',
// 数据库调试模式
'debug' => true,
// 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)
'deploy' => 0,
// 数据库读写是否分离 主从式有效
'rw_separate' => false,
// 读写分离后 主服务器数量
'master_num' => 1,
// 指定从服务器序号
'slave_no' => '',
// 自动读取主库数据
'read_master' => false,
// 是否严格检查字段是否存在
'fields_strict' => true,
// 数据集返回类型
'resultset_type' => 'array',
// 自动写入时间戳字段
'auto_timestamp' => false,
// 时间字段取出后的默认时间格式
'datetime_format' => 'Y-m-d H:i:s',
// 是否需要进行SQL性能分析
];
也可以在index模块中设置,新增或修改app_status的值,把相应的文件放在index文件夹下。
1.模块可以有自己的配置文件,独立配置文件和场景配置文件
2.模块配置的优先级高于应用配置,相同配置项会覆盖掉应用中的配置项
3.模块默认配置文件名是:Config.php
4.模块默认独立配置文件有两个:database.php,validate.php
5.模块场景配置文件名,根据'app_status'参数值确定
在public/index.php配置好定义配置目录后,在index模块下新建config.php文件,设置app_status为my_home,在index模块下新建my_home.php,配置相关参数就可以了。
为降低应用的复杂度,提高安全性,绝大多数情况下,模块配置用得并不多,但如果你有个性化需求时,使用模块设置会方便许多
1.如果配置文件是php文件
\think\Config::load(APP_PATH.'完整文件名');//使用绝对路径加载,默认返回数组
2.如果配置文件是其它格式:ini、xml、json等
\think\Config::parse(APP_PATH.'完整文件名','ini')//使用绝对路径加载,默认返回数组
注意:读取其他位置的配置文件,都是动态加载,需要在控制器中的方法中执行加载。
这里在config目录下新建newconf文件夹,在该文件夹下新建conf.php作为配置文件,通过
\think\Config::load(APP_PATH.'../config/newconf/conf.php');
加载配置文件。
在newconf文件夹下新建conf.ini作为配置文件,通过
\think\Config::parse(APP_PATH.'../config/newconf/conf.ini','ini');
加载配置文件。
一、读取配置项
1.类方法:Config::get('配置参数'),参数为空则是获取全部配置项
dump(\think\Config::get('app_debug'));
2.使用助手函数:config('配置参数'),参数说明与Config::get()完全一样
3.读取二级配置项,参数与值之间用.(点)进行连接
dump(\think\Config::get('app_debug.名字'));
二、判断某配置项是否存在?
1.类方法:Config::has('配置参数');//返回布尔值
dump(\think\Config::has('app_debug'));
2.助手函数:config('?配置参数');//返回布尔值
dump(Config('?app_debug'));
推荐使用类方法
一、类方法:\think\Config.php
在index模块的index.php中编写
//批量配置
$config=[
'site_name'=>'wybing.com',
'site_name'=>'wybing',
];
Config::set($config);
//二级配置
Config::set('site_info',$config);
二、助手函数:config()
1.逐个配置:config('配置参数','参数值');
2.批量配置:config(数组);
3.二级配置:config('配置参数',数组);
//逐个配置
config('site_name','wybing.com');
//批量配置
$config=[
'site_name'=>'wybing.com',
'site_name'=>'wybing',
];
config($config);
//二级配置
config('site_info',$config);
在控制器的方法中,动态设置配置项,可以临时改变某个配置项,优先级也是最高的。
一、独立配置文件
1.用户自定义的独立配置文件必须放在应用或模块下面的extra目录下面
2.默认独立配置文件database.php[数据库],validate.php[验证规则]既可以放在extra下面,也可放在与应用或模块同级的目录下面。如果放在extra目录下面,优先级大于放在应用或模块的同级目录下面
3.文件名就是配置项名称,文件返回一个数组。
惯例配置<应用配置<模块配置<动态配置
1.作用域与命名空间的概念有点类似,就是配置项的可见范围;
2.作用域的表现形式上与二维数组是一样的
3.切换作用域使用:Config::range('作用域');
4.可以将独立配置项归纳到作用域进行管理,也可动态设置。
$config=[
'site_address'=>'wybing.com',
'site_name'=>'wybing',
];
//批量设置,写入user作用域
Config::set($config,'user');
//输出全部配置项
dump(Config::get());
//用数组的方式来配置作用域中的值
Config::set('user.site_name','hello');
//查看设置的值
dump(Config::get('user.site_name'));
//切换作用域
Config::range('_sys_');
dump(Config::get());