ThinkPHP5文档学习——配置

news2025/1/13 10:48:01

文章目录

  • 一、配置目录
  • 二、配置格式
    • PHP数组定义
    • 其它格式的支持
    • 二级配置
  • 三、配置加载
    • 惯例配置
    • 应用配置
    • 拓展配置
    • 场景配置
  • 四、读取配置参数
  • 五、动态配置
    • 设置配置参数
  • 六、独立配置
    • 独立配置文件V5.0.1版本已经废除该写法
    • 自动读取扩展配置
  • 七、配置作用域
  • 八、环境变量配置

一、配置目录

系统默认的配置文件目录就是应用目录(APP_PATH),也就是默认的application下面,并分为应用配置(整个应用有效)和模块配置(仅针对该模块有效)。

├─application         应用目录
│  ├─config.php       应用配置文件
│  ├─database.php     数据库配置文件
│  ├─route.php        路由配置文件
│  ├─index            index模块配置文件目录
│  │  ├─config.php    index模块配置文件
│  │  └─database.php  index模块数据库配置文件
  • 扩展配置目录(V5.0.1)

    5.0.1开始增加了扩展配置目录的概念,在应用配置目录或者模块配置目录下面增加extra子目录,下面的配置文件都会自动加载无需任何配置
    在这里插入图片描述

  • 自定义配置目录位置:

// 定义配置文件目录和应用目录同级    __DIR__:当前文件所在的目录
define('CONF_PATH', __DIR__.'/../config/');

修改后,如下:

├─application         应用目录
├─config              配置目录
│  ├─config.php       应用配置文件
│  ├─database.php     数据库配置文件
│  ├─route.php        路由配置文件
│  ├─index            index模块配置文件目录
│  │  ├─config.php    index模块配置文件
│  │  └─database.php  index模块数据库配置文件

二、配置格式

ThinkPHP支持多种格式的配置格式,但最终都是解析为PHP数组的方式。

PHP数组定义

返回PHP数组是默认的配置格式,例如:

//项目配置文件
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.xml.json.php 在内的格式支持。

二级配置

配置参数支持二级,例如,下面是一个二级配置的设置和读取示例:

$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中内置了一个惯例配置(thinkphp/convention.php)。

应用配置

应用初始化的时候,首先会加载的配置文件,位于application\cnfig.php

拓展配置

扩展配置文件是由extra_config_list配置参数定义的额外的配置文件,默认会加载databasevalidate两个扩展配置文件。

V5.0.1开始,取消了该配置参数,扩展配置文件直接放入application/extra目录会自动加载

场景配置

每个应用都可以在不同的情况下设置自己的状态(或者称之为应用场景),并且加载不同的配置文件。

  • 如果应用配置文件过大,想分成几个单独的模块,可以采用动态配置或拓展配置。
Config::load('配置文件名');
  • 配置格式默认是 php数组格式;如果是其它格式,可以使用parse方法来导入:
Config::parse(APP_PATH.'my_config.ini','ini');
Config::parse(APP_PATH.'my_config.xml','xml');

四、读取配置参数

设置完配置参数后,就可以使用get来读取了:

echo Config::get("配置参数");

系统定义了一个助手函数,也可以读取配置,可简化以上操作:

echo config("配置参数");

tp5提供的config助手函数

读取所有的配置参数:

dump(Config::get());
//或者dump(config());

thinkphp还提供了一个dump()提供给开发者在浏览器中可友好的变量输出。
在这里插入图片描述
判断某个参数是否存在:

Config::has("配置参数");
//或者 config("?配置参数")

如果需要读取二级配置,可以使用:

echo Config::get("配置参数.二级参数");
echo config("配置参数.二级参数");

五、动态配置

设置配置参数

使用set方法设置参数:

Config::set("配置参数","配置值");
//或者使用助手函数
config("配置参数","配置值");

也可进行批量设置:

Config::set([
	'配置参数1' => '配置值1',
	'配置参数2' => '配置值2'
]);
config([
	'配置参数1' => '配置值1',
	'配置参数2' => '配置值2'
]);

六、独立配置

独立配置文件V5.0.1版本已经废除该写法

自动读取扩展配置

版本要求V5.0.1
5.0.1以上版本支持自动读取扩展配置文件(extra_config_list配置参数废弃),只需要将扩展配置文件放入application/extra目录,即可自动读取。

自动读取的配置文件都是二级配置参数,一级配置名称就是扩展配置的文件名。
模块也可以支持自己的扩展配置文件,只需要放入 application/模块名/extra下面就可以自动加载

系统默认加载的独立配置文件不在此列,包括:

文件名描述
config应用或者模块配置文件
database数据库配置文件
tags场景配置文件
场景名应用场景配置文件

如果你更改了CONF_PATH,那么扩展配置文件目录应该是CONF_PATH/extra,模块配置目录则变成 CONF_PATH/module/,模块的扩展配置目录则变成CONF_PATH/module/extra

defined('CONF_PATH') or define('CONF_PATH', APP_PATH); // 配置文件目录

七、配置作用域

配置参数支持作用域的概念,默认情况下,所有参数都在同一个系统默认作用域下面。如果你的配置参数需要用于不同的项目或者相互隔离,那么就可以使用作用域功能,作用域的作用好比是配置参数的命名空间一样。

可以使用range()切换作用域:

Config::range('test');

八、环境变量配置

ThinkPHP5.0支持使用环境变量配置。
可以在根路径下的.env配置文件中采用ini的方式进行配置。
环境变量配置模板
获取环境变量:

Env::get('database.username');
Env::get('database.password');
// 同时下面的方式也可以获取
Env::get('database_username');
Env::get('database_password');

可以支持默认值,例如:

// 获取环境变量   如果不存在则使用默认值root
Env::get('database.username','root');

可以在应用配置中使用环境变量:
app中使用环境变量

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/45280.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

语文课内外杂志语文课内外杂志社语文课内外杂志社2022年第14期目录

幼儿教育《语文课内外》投稿:cn7kantougao163.com 家园协同视域下幼儿心理危机的预防与干预对策 曹锭1-3 幼小衔接阶段幼儿时间观念的培养对策 陈晶晶4-6 有效支持 助力幼儿在书海中徜徉 胡玲珊7-9 东西部幼儿园结对帮扶,助力乡村教育扶贫——以广州市人民政府机关幼…

虹科分享|终端安全防护|网络安全术语列表(二)

如果你的工作或者生活与网络安全有关,你就知道它使用了自己独特的、不断发展的语言。术语和缩略语受到网络安全专家的喜爱。因此,我们创建了一个全面的网络安全词汇表,解释了常用的网络安全术语、短语和技术。我们设计此列表是为了揭开安全专…

[附源码]Python计算机毕业设计Django贷款申请审核管理系统论文

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,我…

你知道吗?小程序组件≠小程序插件

一直以为小程序组件和小程序插件是一回事,只是措辞不一样,导致造成乌龙,其实完全是两回事,插件是可以直接提供服务的,组件是给开发者提供的轮子,不能直接提供服务。 先看看微信是如何定义小程序插件的&…

什么是深度卷积可分离Depthwise Separable conv

假设加载进来一张GRB三通道的图片 我现在就把三个通道拆开 注意哦 传统的就是 一个卷积核filter 和三个通道channel 进行卷积 现在这个深度卷积可分离 就要用三个不同的卷积核来对每一个通道进行卷积 小细节 :如果是传统意义上的卷积,但用一个的话&a…

【SQL Server + MySQL一】数据库基本知识、关系数据模型、关系数据语言--关系代数

极其感动!!!当时学数据库的时候,没白学!! 时隔很长时间回去看数据库的笔记都能看懂,每次都靠这份笔记巩固真的是语雀分享要花钱,要不一定把笔记给贴出来(;༎ຶД༎ຶ) ,除…

详解设计模式:装饰器模式

装饰器模式(Decorator Pattern)也称为包装模式(Wrapper Pattern),是 GoF 的 23 种设计模式中的一种结构型设计模式。装饰器模式 是指在不改变原有对象的基础之上,将功能附加到对象上,提供了比继…

3.7.2、IP地址(网际层)

我们日常的大多数网络应用中,属于数据链路层的 MAC 地址,和属于网络层的 IP 地址都在使用,它们之间存在一定的关系。这里主要介绍 IP 地址的作用 1、基本介绍 IP 地址是因特网(Internet)上的主机和路由器所使用的地址,用于标识两…

osgEarth示例分析——osgearth_graticule

前言 本示例最具有借鉴的功能:绘制网格、网格上的文字显示、拾取地球的坐标。在地球网格示例中,可以设置4种网格。执行命令如下: // --geodetic osgearth_graticuled.exe --geodetic earth_image\china-simple.earth // --utm osgearth_gr…

[附源码]Python计算机毕业设计Django大学生心理测评系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,我…

磁盘划分和磁盘格式化

文章目录列出装置的 UUID 等参数parted 列出磁盘的分区表类型与分区信息磁盘分区:gdisk、fdisk用 gdisk 新增分区槽用 gdisk 删除一个分区槽磁盘格式化(建立文件系统)XFS 文件系统 mkfs.xfsXFS 文件系统 for RAID 效能优化(Option…

【Linux】环境变量

文章目录一.什么是环境变量二.常见的环境变量1.常见的环境变量和与之相关的命令2.PATH指定命令搜索路径3.env显示所有环境变量4.echo查看环境变量三.本地变量与环境变量的联系四.获取环境变量的三种方式1.getenv()函数获取环境变量2.利用命令行参数3.利用第三方变量一.什么是环…

如何校准Linux服务器时间

最近服务器上的时间与北京时间出现偏差,而Java代码里java.util.Date获取的是服务器时间,导致当前时间错误。 Linux查看服务器当前时间 查看当前时区:date -R 查看当前日期和时间:date 校准Linux服务器时间 Linux中有个ntp包可…

【Unity】URP渲染管线下代码获取相机的Volume Mask属性

步骤1. 引用URP的命名空间2. 获取摄像机3.通过URP扩展获取Volume Mask属性附 层级的相关代码Reference1. 引用URP的命名空间 using UnityEngine.Rendering.Universal;2. 获取摄像机 这里可以使用公有拖拽或者私有赋值的方式。 如果使用拖拽,则: publi…

神经网络和深度学习-多分类问题Softmax Classifier

多分类问题Softmax Classifier 在之前做糖尿病数据集的时候做的二分类问题,因为只有两类,所以只需要输出一个概率值,另一个概率值用1去减去就可以得到 实际上在大多数数据集中是在处理一个多分类问题,例如MNIST中有10类标签 神经…

Hifiasm-meta | 你没看错!基于宏基因组的完成图!!

哈佛大学医学院Dana-Farber癌症研究所李恒课题组重磅推出三代HiFi宏基因组组装软件——hifiasm-meta。研究论文“Metagenome assembly of high-fidelity long reads with hifiasm-meta”预印本在线发布。 宏基因组样本的do novo组装是研究微生物群落的常用方法。与单个物种的组…

RNA-seq 详细教程:分析准备(3)

学习目标 了解 RNA-seq 和差异表达基因的分析流程了解如何设计实验了解如何使用 R 语言进行数据分析1. 简介 在过去的十年中,RNA-seq 已成为转录组差异表达基因和 mRNA 可变剪切分析不可或缺的技术。正确识别哪些基因或转录本在特定条件下的表达情况,是理…

【FreeRTOS(四)】显示任务详细信息

文章目录显示任务详细信息 vTaskList代码示例显示任务详细信息 vTaskList 通过 vTaskList来协助分析操作系统当前 task 状态,以帮助优化内存,帮助定位栈溢出问题。 void vTaskList( char *pcWriteBuffer );parameterdescriptionpcWriteBuffer保存任务状态…

11.21~11.28日学习总结

首先这一周,主要进行的几个事情。 1.在星期一~星期二图书报账的相关事情处理已经完毕,记录了现在图书报账的相关流程,比以前的流程有不少改变,已经写了word记录了流程,给下一任图书管理员做参考。 2.进行了项目的中期…

mysql集群的主从复制搭建

1.master上和slave分别安装好mysql(5.7) 2.按照下面的方式进行安装 3.安装完成后,进行初始化,并找到默认的密码进行登录 4.设置为开机自,并检查状态 5.进行登录,用root账户,密码为生成的那个密码…