一、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. git 命令备忘

    git 常用命令备忘 仅作为日常使用备忘,并非常用命名整理 删除源端分支 git push orgin --delete branch_a a分支某次提交应用到b分支 切换到branch_b 分支: ...

  2. Subversion FAQ(常见问题解答)

    转自:http://subversion.apache.org/faq.zh.html 常见问题: 为什么会有这样一个项目? 为了接管CVS的用户基础.确切的说,我们写了一个新的版本控制系统,它和CV ...

  3. HDFS元数据管理机制

    元数据管理概述 HDFS元数据,按类型分,主要包括以下几个部分: 1.文件.目录自身的属性信息,例如文件名,目录名,修改信息等. 2.文件记录的信息的存储相关的信息,例如存储块信息,分块情况,副本个数 ...

  4. mongodb数据库备份恢复-windows系统

    备份语法: mongodump命令脚本语法如下: >mongodump -h dbhost -d dbname -o dbdirectory -h: MongDB所在服务器地址,例如:127.0 ...

  5. linux定时备份MySQL数据库并删除七天前的备份文件

    1.创建备份文件夹 #cd /bak#mkdir mysqldata 2.编写运行脚本 #nano -w /usr/sbin/bakmysql.sh 注:如使用nano编辑此代码需在每行尾添加’&am ...

  6. linux下查看磁盘文件系统

    df -Th fdisk -l parted -l lsblk -f blkid

  7. Linux文件系统检查错误

    我们的Linux系统在无法启动时候,通常需要进入单用户模式下进行修改一些配置文件,或调整一些参数方可.但是在进入单用户模式后,我们的/文件系统是只读模式,无法进行修改,那么这个时候我们就需要用到一条命 ...

  8. ApiServer_YiChat apache项目布置过程

    1.复制文件到   /var/www/  文件夹下 2.配置项目目录 3.修改/var/www/api/public 文件夹下的隐藏文件  .htaccess     增加‘?’号 4.打开/etc/ ...

  9. NGSQC toolkit

    一.NGSQCTooklit 使用 主要是去除dapter和低质量的碱基,并有统计结果 可以得到如下的结果 1,每个位置的碱基的平均质量 2,每个GC值对应的reads数 3,每个质量值对应的read ...

  10. 【[USACO13NOV]没有找零No Change】

    其实我是点单调队列的标签进来的,之后看着题就懵逼了 于是就去题解里一翻,发现楼上楼下的题解说的都好有道理, f[j]表示一个再使用一个硬币就能到达i的某个之前状态,b[now]表示使用那个能使状态j变 ...