一、thinkphp配置类型有哪些?
1.在thinkphp中,有6种配置。即惯例配置,应用配置、扩展配置、模块配置、场景配置、动态配置。
2.惯例配置就是系统默认的配置。
3.应用配置就是我们自己开发创建的应用单独的配置。
4.扩展配置主要是实现我们项目在开发过程中有一些扩展程序用到的配置。
5.模块配置就是我们在一个应用中,每一个模块的配置。
6.场景配置主要是实现我们在不同的开发环境中设置的配置。若我们在家里面办公,电脑环境可能不一样;公司里面办公,公司的电脑环境有不一样。
7.动态配置在我们模块中开发实现的动态配置。如我们在某一个控制器中定义数据库的配置。
二、thinkphp配置的实现原理是什么样的?
1.thinkphp实现这样不同类型的配置,很大程度上面方面了我们进行模块化配置,增强了配置的灵活性。
2.thinkphp的配置加载顺序主要是按照如下顺序。动态配置》》模块配置》》扩展配置》》应用配置》》惯例配置
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', // 这里的配置项的值就是我们对应的配置环境。
这里的文件名必须和上面配置项的值完全一致)
最后,我们直接在我们的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。欢迎各位大拿的加入,你的加入,是我们蓬荜生辉。