ThinkPHP 5.0 配置
ThinkPHP 5.0 配置
目录
<!--
系统默认的配置文件目录就是应用目录(APP_PATH),
也就是默认的application下面,并分为应用配置
(整个应用有效)和模块配置(仅针对该模块有效)。
-->
├─application 应用目录
│ ├─config.php 应用配置文件
│ ├─database.php 数据库配置文件
│ ├─route.php 路由配置文件
│ ├─index index模块配置文件目录
│ │ ├─config.php index模块配置文件
│ │ └─database.php index模块数据库配置文件
<!--
如果不希望配置文件放到应用目录下面,可以在入口文件中定义独立的配置目录,添加CONF_PATH常量定义即可,如下:
-->
// 定义配置文件目录和应用目录同级
define('CONF_PATH', __DIR__.'/../config/');
// 扩展配置目录
<!--
5.0.1开始增加了扩展配置目录的概念,在应用配置
目录或者模块配置目录下面增加extra子目录,下面
的配置文件都会自动加载,无需任何配置。
-->
<!--
如果你定义了CONF_PATH常量为config目录为例,
扩展配置目录如下:
-->
├─application 应用目录
├─config 配置目录
│ ├─config.php 应用配置文件
│ ├─database.php 数据库配置文件
│ ├─route.php 路由配置文件
│ ├─extra 应用扩展配置目录
│ ├─index index模块配置文件目录
│ │ ├─extra index模块扩展配置目录
│ │ ├─config.php index模块配置文件
│ │ └─database.php index模块数据库配置文件
<!--
扩展配置文件的文件名(不含后缀)就是配置参数名,并且会和应用配置文件中的参数进行合并。
-->
配置格式
配置参数名不区分大小写(因为无论大小写定义都会转换成小写),新版的建议是使用小写定义配置参数的规范。
// 数组 项目配置文件
return [
// 默认模块名
'default_module' => 'index',
// 默认控制器名
'default_controller' => 'Index',
// 默认操作名
'default_action' => 'index',
//更多配置参数
//...
];
// 二维数组 项目配置文件
return [
'cache' => [
'type' => 'File',
'path' => CACHE_PATH,
'prefix' => '',
'expire' => 0,
],
];
其他配置格式支持
默认方式为PHP数组方式定义配置文件,你可以在入口文件定义CONF_EXT常量来更改为其它的配置类型:
// 更改配置格式为ini格式
define('CONF_EXT', '.ini');
<!--ini格式配置示例:-->
default_module=Index ;默认模块
default_controller=index ;默认控制器
default_action=index ;默认操作
<!--xml格式配置示例:-->
<config>
<default_module>Index</default_module>
<default_controller>index</default_controller>
<default_action>index</default_action>
</config>
<!--json格式配置示例:-->
{
"default_module":"Index",
"default_controller":"index",
"default_action":"index"
}
二级配置
配置参数支持二级,例如,下面是一个二级配置的设置和读取示例:
$config = [
'user' => [
'type' => 1,
'name' => 'thinkphp',
],
'db' => [
'type' => 'mysql',
'user' => 'root',
'password' => '',
],
];
// 设置配置参数
Config::set($config);
// 读取二级配置参数
echo Config::get('user.type');
// 或者使用助手函数
echo config('user.type');
系统不支持二级以上的配置参数读取,需要手动分步骤读取。
有作用域的情况下,仍然支持二级配置的操作。
配置加载
- 加载顺序:在ThinkPHP中,一般来说应用的配置文件是自动加载的,加载的顺序是:
惯例配置-》应用配置-》扩展配置-》场景配置-》模块配置-》动态配置
- 惯例配置:惯例重于配置是系统遵循的一个重要思想,框架内置有一个惯例配置文件(位于thinkphp/convention.php),按照大多数的使用对常用参数进行了默认配置。所以,对于应用的配置文件,往往只需要配置和惯例配置不同的或者新增的配置参数,如果你完全采用默认配置,甚至可以不需要定义任何配置文件
- 应用配置:应用配置文件是应用初始化的时候首先加载的公共配置文件,默认位于application/config.php。
- 扩展配置:扩展配置文件是由extra_config_list配置参数定义的额外的配置文件,默认会加载database和validate两个扩展配置文件。
- 场景配置:不同的业务场景使用指定的配置文件,场景配置文件和应用配置文件config.php是一样的定义。
- 模块配置:每个模块会自动加载自己的配置文件(位于application/当前模块名/config.php)。模块还可以支持独立的状态配置文件,命名规范为:application/当前模块名/应用状态.php。
- 动态配置:
Config::set('配置参数','配置值');
// 或者使用助手函数
config('配置参数','配置值');
// 批量设置
Config::set([
'配置参数1'=>'配置值',
'配置参数2'=>'配置值'
]);
// 或者使用助手函数
config([
'配置参数1'=>'配置值',
'配置参数2'=>'配置值'
]);
读取配置
- echo Config::get('配置参数1');
- echo config('配置参数1');
- dump(Config::get()); || dump(config());
- Config::has('配置参数2'); || config('?配置参数2');
- echo Config::get('配置参数.二级参数');
echo config('配置参数.二级参数');
独立配置文件
配置文件支持分离(也称为扩展配置),只需要在公共配置文件配置extra_config_list参数(V5.0.1版本已经废除该写法)。
例如,不使用独立配置文件的话,数据库配置信息应该是在config.php中配置如下:
/* 数据库设置 */
'database' => [
// 数据库类型
'type' => 'mysql',
// 服务器地址
'hostname' => '127.0.0.1',
// 数据库名
'database' => 'thinkphp',
// 数据库用户名
'username' => 'root',
// 数据库密码
'password' => '',
// 数据库连接端口
'hostport' => '',
// 数据库连接参数
'params' => [],
// 数据库编码默认采用utf8
'charset' => 'utf8',
// 数据库表前缀
'prefix' => '',
// 数据库调试模式
'debug' => false,
],
如果需要使用独立配置文件的话,则首先在config.php中添加配置:
'extra_config_list' => ['database'],
定义之后,数据库配置就可以独立使用database.php文件,配置内容如下:
/* 数据库设置 */
return [
// 数据库类型
'type' => 'mysql',
// 服务器地址
'hostname' => '127.0.0.1',
// 数据库名
'database' => 'thinkphp',
// 数据库用户名
'username' => 'root',
// 数据库密码
'password' => '',
// 数据库连接端口
'hostport' => '',
// 数据库连接参数
'params' => [],
// 数据库编码默认采用utf8
'charset' => 'utf8',
// 数据库表前缀
'prefix' => '',
// 数据库调试模式
'debug' => false,
],
如果配置了extra_config_list参数,并同时在config.php和database.php文件中都配置的话,则database.php文件的配置会覆盖config.php中的设置。
独立配置文件的参数获取都是二维配置方式,例如,要获取database独立配置文件的type参数,应该是:
Config::get('database.type');
要获取完整的独立配置文件的参数,则使用:
Config::get('database');
环境变量
环境变量配置,在此框架中.env的用法与laravel的环境变量配置相同
ThinkPHP5.0支持使用环境变量配置。
在开发过程中,可以在应用根目录下面的.env来模拟环境变量配置,.env文件中的配置参数定义格式采用ini方式,例如:
app_debug = true
app_trace = true
如果你的部署环境单独配置了环境变量,那么请删除.env配置文件,避免冲突。
环境变量配置的参数会全部转换为大写,值为 null,no 和 false 等效于 "",值为 yes 和 true 等效于 "1"。
ThinkPHP5.0默认的环境变量前缀是PHP_,也可以通过改变ENV_PREFIX常量来重新设置。
注意,环境变量不支持数组参数,如果需要使用数组参数可以,使用下划线分割定义配置参数名:
database_username = root
database_password = 123456
或者使用
[database]
username = root
password = 123456
获取环境变量的值可以使用下面的两种方式获取:
Env::get('database.username');
Env::get('database.password');
// 同时下面的方式也可以获取
Env::get('database_username');
Env::get('database_password');
可以支持默认值,例如:
// 获取环境变量 如果不存在则使用默认值root
Env::get('database.username','root');
可以直接在应用配置中使用环境变量,例如:
return [
'hostname' => Env::get('hostname','127.0.0.1'),
];
环境变量中设置的app_debug和app_trace参数会自动生效(优先于应用的配置文件),其它参数则必须通过Env::get方法才能读取。
ThinkPHP 5.0 配置的更多相关文章
- ThinkPHP 5.0/5.1 自定义404界面的配置
★ 背景还要啥背景,就是觉得不可能用框架自带的 404 界面呗.可能跟之前的版本配置方法有点区别,在此做一下简单的笔记 框架:ThinkPHP 5.1,ThinkPHP5.0.20 ★ 配置过程♩. ...
- thinkphp的nginx配置
thinkphp的nginx配置 server { listen 80; server_name www.abc.com; #charset utf-8; access_log /var/www/ww ...
- thinkphp 5.0 命名空间
命名空间 命名空间 ThinkPHP5采用命名空间方式定义和自动加载类库文件,有效的解决了多模块和Composer类库之间的命名空间冲突问题,并且实现了更加高效的类库自动加载机制. 如果不清楚命名空间 ...
- thinkphp 5.0 模块设计
模块设计 5.0版本对模块的功能做了灵活设计,默认采用多模块的架构,并且支持单一模块设计,所有模块的命名空间均以app作为根命名空间(可配置更改). 目录结构 标准的应用和模块目录结构如下: ├─ap ...
- 把VueThink整合到已有ThinkPHP 5.0项目中
享 关键字: VueThink ThinkPHP5.0 Vue2.x TP5 管理后台扩展 VueThink初认识 VueThink,是一个很不错的技术框架,由广州洪睿科技的技术团队2016年研发( ...
- ThinkPHP V5.0 正式版发布
ThinkPHP5.0版本是一个颠覆和重构版本,官方团队历时十月,倾注了大量的时间和精力,采用全新的架构思想,引入了更多的PHP新特性,优化了核心,减少了依赖,实现了真正的惰性加载,支持compose ...
- thinkphp 5.0 lnmp环境下 无法访问,报错500(public目录)
两种方法: 1.修改fastcgi的配置文件 /usr/local/nginx/conf/fastcgi.conf fastcgi_param PHP_ADMIN_VALUE "open_b ...
- ThinkPHP 5.0.x SQL注入分析
前言 前段时间,晴天师傅在朋友圈发了一张ThinkPHP 注入的截图.最近几天忙于找工作的事情,没来得及看.趁着中午赶紧搭起环境分析一波.Think PHP就不介绍了,搞PHP的都应该知道. 环境搭建 ...
- ThinkPHP5.0框架开发--第3章 TP5.0 配置
ThinkPHP5.0框架开发--第3章 TP5.0 配置 第3章 TP5.0 配置 ========================================================= ...
随机推荐
- Google地图下载工具代码
// // Google Map Tiles Downloader in C# by coolypf // No rights reserved, neither warranty nor guara ...
- C语言实现常用数据结构——二叉树
#include<stdio.h> #include<stdlib.h> #define SIZE 10 typedef struct Tree { int data; str ...
- Spring之ApplicationContext
(1)ApplicationContext接口容器 ApplicationContext用于加载Spring的配置文件,在程序中充当“容器”的角色.其实现类有两个.通过Ctrl +T查看: A.配置文 ...
- hadoop之hive集合数据类型
除了string,boolean,date等基本数据类型之外,hive还支持三种高级数据类型: 1.ARRAY ARRAY类型是由一系列相同数据类型的元素组成,这些元素可以通过下标来访问.比如有一个A ...
- What?Tomcat-竟然也算中间件?
关于 MyCat 的铺垫文章已经写了两篇了: MySQL 只能做小项目?松哥要说几句公道话! 北冥有 Data,其名为鲲,鲲之大,一个 MySQL 放不下! 今天是最后一次铺垫,后面就可以迎接大 Bo ...
- Spring Boot:整合Swagger文档
综合概述 spring-boot作为当前最为流行的Java web开发脚手架,越来越多的开发者选择用其来构建企业级的RESTFul API接口.这些接口不但会服务于传统的web端(b/s),也会服务于 ...
- Java项目接入sso单点登录
最近在落地cat(java开发的一款开源监控系统)接入公司的内部项目,其中有项需求是接入公司的sso单点登录系统.研究了公司之前java项目接入sso系统,大部分是采用spring框架,然后依赖spr ...
- 妹子问我maven是啥?从相亲说起。。
自从上一篇原创文章: 第一次教妹子安装IDEA 在<java技术之家>公号发表之后,大家的好评如潮,这给了我继续写下去的信心.感谢你们的支持,我会继续努力的. 自从漂亮妹妹加入我们研发团队 ...
- Confluence5.6.6安装和破解
1.安装confluence 1. 软件环境说明 # 安装 jdk [root@wiki_5-- jar]# cat /etc/redhat-release CentOS Linux release ...
- 恢复云数据库MySQL的备份文件到自建数据库遇到的报错
报错信息 : 恢复云数据库MySQL的备份文件到自建数据库,自建数据库版本5.6.36. 按照阿里云文档操作,启动数据库报错 -- :: [ERROR] /application/mysql/bin/ ...