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

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

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


配置加载

  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方法才能读取。

原文地址:https://www.cnblogs.com/maomojun/p/9330714.html

时间: 2024-08-28 09:50:15

ThinkPHP 5.0 配置的相关文章

ThinkPHP V5.0 正式版发布

ThinkPHP5.0 正式版的发布,是团队中秋节送给PHP开发者最好的礼物!祝大家中秋快乐,事业顺利,用ThinkPHP开发更健康^_^ ThinkPHP5.0版本是一个颠覆和重构版本,官方团队历时十月,倾注了大量的时间和精力,采用全新的架构思想,引入了更多的PHP新特性,优化了核心,减少了依赖,实现了真正的惰性加载,支持composer,并针对API开发做了大量的优化,包括路由.日志.异常.模型.数据库.模板引擎和验证等模块都已经重构(基础教程qkxue.net),不适合原有3.2项目的升级

thinkphp 5.0 模块设计

模块设计 5.0版本对模块的功能做了灵活设计,默认采用多模块的架构,并且支持单一模块设计,所有模块的命名空间均以app作为根命名空间(可配置更改). 目录结构 标准的应用和模块目录结构如下: ├─application 应用目录(可设置) │ ├─common 公共模块目录(可选) │ ├─common.php 公共函数文件 │ ├─route.php 路由配置文件 │ ├─database.php 数据库配置文件 │ ├─config.php 应用配置文件 │ ├─module1 模块1目录

thinkphp 5.0 命名空间

命名空间 命名空间 ThinkPHP5采用命名空间方式定义和自动加载类库文件,有效的解决了多模块和Composer类库之间的命名空间冲突问题,并且实现了更加高效的类库自动加载机制. 如果不清楚命名空间的基本概念,可以参考PHP手册:PHP命名空间 特别注意的是,如果你需要调用PHP内置的类库,或者第三方没有使用命名空间的类库,记得在实例化类库的时候加上 \,例如: // 错误的用法 $class = new stdClass(); $xml = new SimpleXmlElement($xml

thinkphp的项目配置

1.配置类别 ThinkPHP提供了灵活的全局配置功能,ThinkPHP会依次加载管理配置>项目配置>调试配置>分组配置>扩展配置>动态配置,所以后面的配置权限要大于前面的,因为后面的配置会覆盖前面同名配置,同事会生辰配置缓存文件无需重复解析,减小开销. 惯例配置:在惯例配置内对大多数常用参数进行默认配置,因为惯例配置最先加载,优先级别最低,如果不需要做特殊配置的话,完全可以保持默认值,惯例配置位于ThinkPHP/Conf/convention.php,内容摘抄如下: &l

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

两种方法: 1.修改fastcgi的配置文件 /usr/local/nginx/conf/fastcgi.conf fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/../:/tmp/:/proc/"; 2.这个时候需要在php.ini下面添加如下内容 注: xxx.abczn.com 替换成你对应的域名和目录 [HOST=xxx.abczn.com]open_basedir=/home/wwwroot/xxx.abc

Thinkphp &lt;= 5.0.10 缓存getshell复现

目录 Thinkphp <= 5.0.10 缓存getshell复现 0x01 poc 0x02 跟踪源码 0x03 审计思路 0x04 补丁 0x05 参考 Thinkphp <= 5.0.10 缓存getshell复现 0x01 poc 首先看缓存函数的使用场景 然后会生成以下缓存文件 可以看到,字符串abc直接存储到以php结尾的缓存文件中.尝试使用\n换行getshell 语法有错,注释一下后面的垃圾字符,成功getshell. 0x02 跟踪源码 首先跟进18行的Cache::set

cordova 3.0 配置

cordova 3.0 配置 总结下安装的一些问题: 1.必备安装 Java JDK,需配置系统path,否则在添加平台时会有问题. apache ant,打包工具,有windows版本,需配置系统path. android sdk,需配置系统path. 很重要的一点是,都需要配置好系统path值. 2.创建项目.并编译.官网有详细介绍,必备安装如果都有设置相应path一般不会有太多问题. 3.通过命令方式编译,其实很麻烦,因为启动ADT后,就无法再操作,所以DEBUG时得重新打开新的ADT.而

VC++6.0 配置CppUTest测试环境

最近看<软件项目成功之道>,书中无数次提及到“单元测试”对于项目成败的重要性,看到同事将CppUTest用于Linux动态库测试,于是在VC++6.0环境下搭建一个基于CppUTest的单元测试环境,用于测试工作中编写的C函数.下面就来介绍整个搭建过程,整个过程分为四步:前期准备——需要的库:环境配置——VC++6.0配置:实例演示——可复现的Demo:拓展——后续学习资料. 一.前期准备: CppUTest下载 官网:http://cpputest.github.io/ 历史版本:https

ADFS 2.0 配置简介 PartⅢ – 声明规则语言

上一篇我们最终把 ADFS 与应用之间的信任关系建立起来了,但是应用接收到的声明信息只有默认的两个,这次我们就来学学怎么配置声明. 一.声明存储配置 ADFS 目前默认支持三种方式的声明值存储,另外还有自定义存储,不过我没去研究 二.编辑预定义声明 三.编写自己的定制声明 如果你需要编写自定义的声明规则,那么你需要掌握一种描述声明的语法,很简单的,首先让我们看看上边配置的电子邮件声明生成的语句 c:[Type == "http://schemas.microsoft.com/ws/2008/06