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');

系统不支持二级以上的配置参数读取,需要手动分步骤读取。

有作用域的情况下,仍然支持二级配置的操作。


配置加载

  1. 加载顺序:在ThinkPHP中,一般来说应用的配置文件是自动加载的,加载的顺序是:
惯例配置-》应用配置-》扩展配置-》场景配置-》模块配置-》动态配置
  1. 惯例配置:惯例重于配置是系统遵循的一个重要思想,框架内置有一个惯例配置文件(位于thinkphp/convention.php),按照大多数的使用对常用参数进行了默认配置。所以,对于应用的配置文件,往往只需要配置和惯例配置不同的或者新增的配置参数,如果你完全采用默认配置,甚至可以不需要定义任何配置文件
  2. 应用配置:应用配置文件是应用初始化的时候首先加载的公共配置文件,默认位于application/config.php。
  3. 扩展配置:扩展配置文件是由extra_config_list配置参数定义的额外的配置文件,默认会加载database和validate两个扩展配置文件。
  4. 场景配置:不同的业务场景使用指定的配置文件,场景配置文件和应用配置文件config.php是一样的定义。
  5. 模块配置:每个模块会自动加载自己的配置文件(位于application/当前模块名/config.php)。模块还可以支持独立的状态配置文件,命名规范为:application/当前模块名/应用状态.php。
  6. 动态配置:
Config::set('配置参数','配置值');
// 或者使用助手函数
config('配置参数','配置值');
// 批量设置
Config::set([
'配置参数1'=>'配置值',
'配置参数2'=>'配置值'
]);
// 或者使用助手函数
config([
'配置参数1'=>'配置值',
'配置参数2'=>'配置值'
]);

读取配置

  1. echo Config::get('配置参数1');
  2. echo config('配置参数1');
  3. dump(Config::get()); || dump(config());
  4. Config::has('配置参数2'); || config('?配置参数2');
  5. 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 配置的更多相关文章

  1. ThinkPHP 5.0/5.1 自定义404界面的配置

    ★ 背景还要啥背景,就是觉得不可能用框架自带的 404 界面呗.可能跟之前的版本配置方法有点区别,在此做一下简单的笔记 框架:ThinkPHP 5.1,ThinkPHP5.0.20 ★ 配置过程♩. ...

  2. thinkphp的nginx配置

    thinkphp的nginx配置 server { listen 80; server_name www.abc.com; #charset utf-8; access_log /var/www/ww ...

  3. thinkphp 5.0 命名空间

    命名空间 命名空间 ThinkPHP5采用命名空间方式定义和自动加载类库文件,有效的解决了多模块和Composer类库之间的命名空间冲突问题,并且实现了更加高效的类库自动加载机制. 如果不清楚命名空间 ...

  4. thinkphp 5.0 模块设计

    模块设计 5.0版本对模块的功能做了灵活设计,默认采用多模块的架构,并且支持单一模块设计,所有模块的命名空间均以app作为根命名空间(可配置更改). 目录结构 标准的应用和模块目录结构如下: ├─ap ...

  5. 把VueThink整合到已有ThinkPHP 5.0项目中

     享 关键字: VueThink ThinkPHP5.0 Vue2.x TP5 管理后台扩展 VueThink初认识 VueThink,是一个很不错的技术框架,由广州洪睿科技的技术团队2016年研发( ...

  6. ThinkPHP V5.0 正式版发布

    ThinkPHP5.0版本是一个颠覆和重构版本,官方团队历时十月,倾注了大量的时间和精力,采用全新的架构思想,引入了更多的PHP新特性,优化了核心,减少了依赖,实现了真正的惰性加载,支持compose ...

  7. thinkphp 5.0 lnmp环境下 无法访问,报错500(public目录)

    两种方法: 1.修改fastcgi的配置文件 /usr/local/nginx/conf/fastcgi.conf fastcgi_param PHP_ADMIN_VALUE "open_b ...

  8. ThinkPHP 5.0.x SQL注入分析

    前言 前段时间,晴天师傅在朋友圈发了一张ThinkPHP 注入的截图.最近几天忙于找工作的事情,没来得及看.趁着中午赶紧搭起环境分析一波.Think PHP就不介绍了,搞PHP的都应该知道. 环境搭建 ...

  9. ThinkPHP5.0框架开发--第3章 TP5.0 配置

    ThinkPHP5.0框架开发--第3章 TP5.0 配置 第3章 TP5.0 配置 ========================================================= ...

随机推荐

  1. Windows 64 位下安装 psyco 1.6

    用 eclipse 运行 python 的时候,第一行总是有红色提示:没有安装 psyco,程序可以正常运行但是会有一点慢.于是就干脆装上吧,红色的提示还是越少越舒服. 百度了一下,在这里,http: ...

  2. Ruby元编程:执行某个目录下的全部测试用例

    目前手里有个测试项目各个feature的测试用例都放在对应的子目录下,虽然有自动化测试框架的帮助执行起来很方便,但是偶尔也有需要在本地执行某个feature的全部测试用例集合.因为本人对shell脚本 ...

  3. Ruby元编程:单元测试框架如何找到测试用例

    前几天看了Google Testing Blog上的一篇文章讲到C++因为没有反射机制,所以如何注册测试用例就成了一件需要各显神通的事情.从我的经验来看,无论是Google的GTest还是微软的LTM ...

  4. String的所有方法以及解释

    capitalize() 把字符串的第一个字符改为大写 casefold() 把整个字符串的所有字符改为小写 center(width) 将字符串居中,并使用空格填充至长度 width 的新字符串 c ...

  5. 【设计模式】行为型08状态模式(status Pattern)

    状态模式(status Pattern)       定义:允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类.其别名为状态对象(Objects for States).与命令模式 ...

  6. CentOS 7 使用 HP 打印机

    通常 hp 打印机应该是直接就能用的,但 centos 7 就一直遇到 printing job stopped 的情况.查看 http://localhost:631/printers/ 并没什么用 ...

  7. DBA主宰一切请求,MySQL 查询重写

    这个功能一年左右之前就以知晓,应该是5.7的高版本中.今天难得有兴致测试.随之也就总结一下. 前言: 一般来说,我们都会让开发自己去改sql.这样需要重启应用,单节点不可避免有或多或少的停服时间.同事 ...

  8. Facebook也炒币吗?Libra币是什么?

    Facebook 在上周发布了加密数字货币,称为 Libra币. 太火爆了,很多人都在关注和讨论,包括一些科技大佬们都很积极的讨论(当然,这里指的是真正的科技大佬,比如 马化腾.王兴等,而不是指哪些割 ...

  9. django基础知识之后台管理Admin站点:

    Admin站点 通过使用startproject创建的项目模版中,默认Admin被启用 1.创建管理员的用户名和密码 python manage.py createsuperuser 然后按提示填写用 ...

  10. springboot2.0.4对接redis3.2.12版本哨兵模式

    redis 哨兵模式的创建 1. 下载redis3.2.12版本.https://codeload.github.com/antirez/redis/zip/3.2.12 2.  解压后放到/usr/ ...