一、thinkphp配置类型有哪些?

  1.在thinkphp中,有6种配置。即惯例配置,应用配置、扩展配置、模块配置、场景配置、动态配置。

  2.惯例配置就是系统默认的配置。

  3.应用配置就是我们自己开发创建的应用单独的配置。

  4.扩展配置主要是实现我们项目在开发过程中有一些扩展程序用到的配置。

  5.模块配置就是我们在一个应用中,每一个模块的配置。

  6.场景配置主要是实现我们在不同的开发环境中设置的配置。若我们在家里面办公,电脑环境可能不一样;公司里面办公,公司的电脑环境有不一样。

  7.动态配置在我们模块中开发实现的动态配置。如我们在某一个控制器中定义数据库的配置。

二、thinkphp配置的实现原理是什么样的?

  1.thinkphp实现这样不同类型的配置,很大程度上面方面了我们进行模块化配置,增强了配置的灵活性。

  2.thinkphp的配置加载顺序主要是按照如下顺序。动态配置》》模块配置》》扩展配置》》应用配置》》惯例配置

  3.thinkphp实现配置主要是使用了php的array_merage()函数(如果两个或更多个数组元素有相同的键名,则最后的元素会覆盖其他元素。)。当我们系统去加载我们的配置文件时,就会覆盖前面的配置文件,因此才会实现上面第二步的执行顺序。

三、为什么要实现这样的配置?

  1.通过不同类型的配置,我们便于项目的配置管理。加入我们就使用框架自带的配置,当我们在某个模块开发中,需要将数据存在另外一台服务器的数据库上,是不是我们的项目就不能实现了。像这种情况还很多,这只是一个简单的例子。

四、配置文件要求

  在所有的配置文件中都是采用数组的方式,当我们系统在加载该配置文件时,都会return一个数组,这个数组就是我们的配置项目。我们在系统中访问配置项,可以使用config()助手函数,也可以使用config类

五、如何是实现这些类型的配置呢?

  1.惯例配置。

    惯例配置直接在框架的核心目录下面的convention.php中,这里不做细讲。

  2.应用配置。

    我们在创建项目时,框架会默认在application目录西面创建config.php,database.php等配置文件。我们直接在相应的文件中进行操作即可。下面单独讲解的主要是采用创建一个目录来配置,效果都是一样的,无非是换了个文件路径而已。

    a.定义配置文件路径,找到项目入口文件,在application同级别目录下创建一个config的目录(后面配置讲解都是在该目录下面操作,下面就不单独讲解)。

define('CONF_PATH', __DIR__.'/../config/');

    接下来在该目录下面直接创建配置文件即可,创建的文件名称不一定局限于config,database。至于文件里面的配置项和convention.php配置文件的方式一致。当我们在项目运行过程中,会自动的加载该目录下面的配置项。

  3.扩展配置。扩展配置主要是我们在开发中用它的一些数据的扩展使用,如我们使用邮箱,要涉及到邮箱的账号。便可以在该目录下面配置。我们在config目录下面创建一个extra目录,在该目录下面创建对应的文件。如我在下面创建了email.php文件,定义如下内容:

<?php
return [
"user_emial" => "1005349393@qq.com"
]; 

  在我们系统中加载该配置项。

var_dump(config("email.user_emial")); // 在系统默认中,会给我们的环境变量都加一个PHP的前缀,并且都会将配置项转换为大写。这里我们使用我们的助手函数便可直接访问配置项。

  4.模块配置。这里大致讲解一下即可。主要的就是在我们的模块目录下面创建对应的config.php,database.php等文件即可。

  5.场景配置。***这是本文的大招。场景配置主要是为了适应我们不同的开发环境,例如我们在公司的环境和在家里面的环境配置不一致,此时我们可能需要修改很多地方,同时回到了公司又得修改过来,这样岂不是很麻烦。

    首先,我们在config目录下面的配置文件中加载一个配置项。

'app_status'             => 'office', // 这里的配置项的值就是我们对应的配置环境。

    接下来,在我们的config目录下面创建一个office.php(这里的文件名必须和上面配置项的值完全一致)

    最后,我们直接在我们的office.php配置文件中配置即可。其实在thinkphp还有个比较不错的功能就是.env。之前一直知道laravel有,没主要thinkphp5,最近才发现。使用该功能对于开发中的配置又方便了很多了。很赞。

    首先我们在我们的项目目录下面创建一个.env的文件,里面配置我们的配置项。如下

status= office

    我们要使用的话,直接使用框架自带的env类即可。至于更多有关env的方法直接参考开发手册。

'app_status' => Env::get("status");我们将上一步场景配置项中的值设置为.env文件中的配置项。一定要引入ENV这个类。

    通过我们的.env文件,只需要我们实现将一些配置文件配置好,或者将一些常用的配置文件放在.env文件中,我们就只修改这一个文件即可。

  6.动态配置。动态配置顾名思义是随着我们项目开发的需要来配置,而不是直接使用我们配置文件中的配置。下面列举一个简单的实例。

<?php
namespace app\index\controller;
use think\Controller;
class Index extends Controller
{
public function index()
{
config("app_name", "weixin"); // 在控制器中配置一个app_name的配置项,这里也可以使用config类来操作。
}
}

本节小结:本文讲解的配置方式主要是为了项目开发方便,并非一定要这样操作,可按照个人的习惯来操作。有什么不不对的地方欢迎指出,qq群:425535068。欢迎各位大拿的加入,你的加入,是我们蓬荜生辉。

  

thinkphp5配置讲解的更多相关文章

  1. 正向代理 forward proxy、反向代理 reverse proxy、透明代理 transparent proxy nginx反向代理原理和配置讲解 防止外部客户机获取内部内容服务器的重定向 URL 缓存命中

    [大型网站技术实践]初级篇:借助Nginx搭建反向代理服务器 - Edison Chou - 博客园http://www.cnblogs.com/edisonchou/p/4126742.html 图 ...

  2. RocketMQ(4)---RocketMQ核心配置讲解

    RocketMQ核心配置讲解 RocketMQ的核心配置在broker.conf配置文件里,下面我们来分析下它. 一.broker.conf配置 下面只列举一些常用的核心配置讲解. 1.broker. ...

  3. 小D课堂 - 零基础入门SpringBoot2.X到实战_第2节 SpringBoot接口Http协议开发实战_6、SpringBoot2.xHTTP请求配置讲解

    1.SpringBoot2.xHTTP请求配置讲解 简介:SpringBoot2.xHTTP请求注解讲解和简化注解配置技巧 1.@RestController and @RequestMapping是 ...

  4. HAproxy的安装与配置讲解

    1,安装 官网下载 http://www.haproxy.org/#down cd /usr/local/src/ wget http://www.haproxy.org/download/1.4/s ...

  5. Linux常用配置讲解

    本文主要讲解Linux的用户设置.主机名设置.网络配置.防火墙配置 用户传输包的命令lrzsz的安装以及SSH服务配置等基本操作. 1. 用户名设置 服务肯定是为了用户,而用户可能对于Linux并不了 ...

  6. WebConfig配置讲解

    http://www.cnblogs.com/cyq1162/archive/2006/11/16/562690.html sqlserver配置数据库连接字符串时需分2种情况 windows 和 s ...

  7. CVS winCVS配置讲解及用户管理

    首先 用到工具包包括 CVSNT ,WinCvs及相关python 2.2.3和TCL832 可点此链接下载 http://files.cnblogs.com/lppblogs/%E6%96%87%E ...

  8. odoo权限配置讲解2

    今天我们在来讲解一下odoo中配合使用公司开发的权限配置模块,简单配置odoo权限的操作说明 接着上篇讲到的,昨天我们只是做了一个简单的表单模型的筛选规则 今天来讲解一下如何在创建内贸报价单的时候,在 ...

  9. odoo 权限配置讲解

    今天来讲解一下odoo权限配置的简单讲解,配合公司开发的权限模块的使用,进行odoo权限配置的说明 BaseSecurityExtend 2.0模块 这是公司自主开发的一款针对odoo菜单级别进行可视 ...

随机推荐

  1. string 替换字符串

    C++的string提供了replace方法来实现字符串的替换,但是对于将字符串中某个字符串全部替换这个功能,string并没有实现,我们今天来做的就是这件事.首先明白一个概念,即string替换所有 ...

  2. According to TLD, tag fmt:formatDate must be empty, but is not 问题的解决

    在执行jsp格式化后报错,检查下代码,发现变成如下的样式: <fmt:formatDate value="${cur.sa_date}" pattern="yyyy ...

  3. Oracle案例02——ORA-12034: "SCOTT"."USER_TABLE" 上的实体化视图日志比上次刷新后的内容新

    最近同事在交接工作时,发现有几个schedule job没有执行成功,我这边给看了下,其中一个是由于数据库迁移,调用dblink的host主机IP在tnsnames中没有变更导致,还有一个是无法视图的 ...

  4. WPF DatePicker日期控件只显示年月

    1.需要引用2个类,第一个类DatePickerCalendar public class DatePickerCalendar { public static readonly Dependency ...

  5. js判断客户浏览器类型,版本

    在JS中判断浏览器的 类型,估计是每个编辑过页面的开发人员都遇到过的问题.在众多的浏览器产品中,IE.Firefox.Opera.Safari........众多品牌 却标准不一,因此时常需要根据不同 ...

  6. 【Leetcode】【Medium】Subsets II

    Given a collection of integers that might contain duplicates, S, return all possible subsets. Note: ...

  7. zookeeper 的监控工具

    zookeeper 的监控工具         公司很多产品会使用zookeeper,比如Meta消息中间件,在测试的过程中,我们经常需要查询zookeeper里面的信息来精确定位问题.目前项目中有开 ...

  8. 应用线性代数简介 - 向量,矩阵和最小二乘法 By Stephen Boyd and Lieven Vandenberghe

    Introduction to Applied Linear Algebra – Vectors, Matrices, and Least Squares 应用线性代数简介 - 向量,矩阵和最小二乘法 ...

  9. python 图形界面

    Python自带的库是支持Tk的Tkinter,使用Tkinter,无需安装任何包,就可以直接使用. Tk是一个图形库,支持多个操作系统 导入Tkinter包的所有内容: from tkinter i ...

  10. vue记录

    vue项目中使用默认图片代替异常图片 第一种方法 <img onerror="javascript:this.src='../../static/custom.png';" ...