# 基础配置
初次接触一个新项目时,会给人一种一筹莫展的感觉,尤其是一个全新的未知的项目,首页我们拿到一个新项目(或新框架),首页我们先看下项目框架的具体架构和设计思路,在上一章节《目录结构》中我们做了详细的介绍,这里我们不做扩展,本章节我们重点介绍下框架的基础配置;
# 项目依赖
框架使用Composer
作为依赖包管理工具,在开始使用项目前请务必安装好第三方依赖库,以便项目在实际运行过程中出现缺少依赖或者莫名的报错问题(切记
),框架默认集成的依赖如下:
"php": ">=7.1.0",
"topthink/framework": "^6.0.0",
"topthink/think-orm": "^2.0",
"topthink/think-captcha": "^3.0"
2
3
4
由于ThinkPHP6框架本身将以前的版本(如5.1
、5.0
)中集成的部分第三方依赖进行了剔除,所以我们在使用ThinkPHP6进行项目开发时需要手动将一些必备的依赖包进行自行加入,如验证码依赖think-captcha
,在项目开发过程中可以根据自己的实际需求自行引入其他依赖,然后通过 Composer
安装即可;
# 环境变量
系统环境变量配置文件.env
,系统运行所需的参数如有需要都可以作为环境变量参数存在,内容如下:
APP_DEBUG = true
[APP]
DEFAULT_TIMEZONE = Asia/Shanghai
[DATABASE]
TYPE = mysql
HOSTNAME = 127.0.0.1
DATABASE = rxthink-vue-pro6
USERNAME = root
PASSWORD =
HOSTPORT = 3306
CHARSET = utf8mb4
PREFIX = evt_
DEBUG = true
[LANG]
default_lang = zh-cn
// 缓存配置
[CACHE]
DRIVER = file
HOST = 127.0.0.1
PORT = 6379
PASSWORD =
SELECT = 1
TIMEOUT = 0
EXPIRE = 0
PREFIX = EVTP6_
// 域名配置
[DOMAIN]
IMG_URL = http://images.evtp6.pro
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
参数说明:
APP_DEBUG
表示是否开启调试模式,true是、false否;DATABASE
为数据库连接相关配置,TYPE
:数据库类型、HOSTNAME
:主机地址、DATABASE
:数据库名、USERNAME
:数据库账号、PASSWORD
:数据库密码、HOSTPORT
:数据库端口号、CHARSET
:数据库字符编码、PREFIX
:数据表前缀、DEBUG
:是否开启调试模式;CACHE
此处为缓存相关配置;DRIVER
:缓存模式,分为file文件缓存和redis缓存,根据需要自行设置;DOMAIN
此处为域名相关配置,IMG_URL
参数为图片域名,需要给当前图片域名配置虚拟主机,Apache和Nginx都可以,根据实际情况自行配置;
# 缓存配置
为了系统的性能提升和运行效率,框架底层已经友好的封装了继承了缓存功能,只需要开启即可,根据系统设计要求,框架目前支持两种缓存模式:文件缓存
和Redis缓存
,缓存配置文件内容如下:
<?php
// +----------------------------------------------------------------------
// | 缓存设置
// +----------------------------------------------------------------------
return [
// 默认缓存驱动
'default' => env('cache.driver', 'file'),
// 缓存连接方式配置
'stores' => [
'file' => [
// 驱动方式
'type' => 'File',
// 缓存保存目录
'path' => '',
// 缓存前缀
'prefix' => '',
// 缓存有效期 0表示永久缓存
'expire' => 0,
// 缓存标签前缀
'tag_prefix' => 'tag:',
// 序列化机制 例如 ['serialize', 'unserialize']
'serialize' => [],
],
// Redis缓存配置
'redis' => [
// 驱动方式
'type' => 'redis',
'host' => env('cache.host', '127.0.0.1'),
'port' => env('cache.port', 6379),
'password' => env('cache.password', ''),
'select' => intval(env('cache.select', 0)),
'timeout' => env('cache.timeout', 0),
// 全局缓存有效期(0为永久有效)
'expire' => env('cache.expire', 0),
'persistent' => env('cache.persistent', ''),
// 缓存前缀
'prefix' => env('cache.prefix', 'PRO_'),
'tag_prefix' => env('cache.tag_prefix', 'tag:'),
'serialize' => [],
],
// 更多的缓存连接
],
];
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
如以上内容所示,缓存驱动的模式从环境变量
中获取env('cache.driver', 'redis')
默认系统使用的是redis缓存,所以再使用之前,需要开启Redis
服务的支持,根据缓存模式的不同,各自的参数及配置值也是有所差异的,有关配置参数有不明白请查询相关资料;
# 常量配置
同时在模块内部我们需要对一些常规的常量进行配置,ThinkPHP6已经为我们做了架构层面的解析,我们只需要在模块内建立config
文件夹,以admin
模块为例,我们在config
局部配置目录里面新建文件admin.php
,在此文件中我们写入常规的配置参数,使用系统本身的获取配置的方式即可获取,如config('admin.gender_list')
,系统admin.php详细内容如下:
<?php
// +----------------------------------------------------------------------
// | RXThinkCMF框架 [ RXThinkCMF ]
// +----------------------------------------------------------------------
// | 版权所有 2017~2020 南京RXThinkCMF研发中心
// +----------------------------------------------------------------------
// | 官方网站: http://www.rxthink.cn
// +----------------------------------------------------------------------
// | Author: 牧羊人 <1175401194@qq.com>
// +----------------------------------------------------------------------
/**
* 中台配置类
*
* @author 牧羊人
* @since 2020-04-21
*/
return [
/**
* 性别
*/
'gender_list' => [
1 => '男',
2 => '女',
3 => '未知',
],
];
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
系统加载完成后,当前配置文件会默认加载到系统中,此时我们可以使用框架自带的获取配置参数的方式获取参数值,如:config('admin.gender_list')
等等,以此类推,需要定义常量的参数都可以在此文件中进行配置;
# 中间件配置
在项目开发中经常会使用到中间件,我们可以自定义中间件并在配置文件 config\middleware.php
中进行配置,如下所示:
<?php
// 中间件配置
return [
// 别名或分组
'alias' => [
'checkLogin' => app\middleware\CheckLogin::class,
],
// 优先级设置,此数组中的中间件会按照数组中的顺序优先执行
'priority' => [],
];
2
3
4
5
6
7
8
9
10
11
系统中我们自定义了登录验证中间件并在此做了注册配置,可以借助命令 php think make:middleware 中间件名
自定生成文件并到指定目录 app\middleware\
下,使用也非常简单,有两种使用方式如下所示:
// 中间件
protected $middleware = [
'checkLogin'
];
2
3
4
# 验证码配置
系统框架集成了登录验证码校验,框架调用的是官方的验证码库,验证码相关的配置参数都在文件 config\captcha.php
中,可以根据自己的需求自动更改参数,具体内容如下:
<?php
// +----------------------------------------------------------------------
// | Captcha配置文件
// +----------------------------------------------------------------------
return [
//验证码位数
'length' => 5,
// 验证码字符集合
'codeSet' => '2345678abcdefhijkmnpqrstuvwxyzABCDEFGHJKLMNPQRTUVWXY',
// 验证码过期时间
'expire' => 1800,
// 是否使用中文验证码
'useZh' => false,
// 是否使用算术验证码
'math' => false,
// 是否使用背景图
'useImgBg' => false,
//验证码字符大小
'fontSize' => 25,
// 是否使用混淆曲线
'useCurve' => true,
//是否添加杂点
'useNoise' => true,
// 验证码字体 不设置则随机
'fontttf' => '',
//背景颜色
'bg' => [243, 251, 254],
// 验证码图片高度
'imageH' => 0,
// 验证码图片宽度
'imageW' => 0,
// 添加额外的验证码设置
// verify => [
// 'length'=>4,
// ...
//],
];
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# 文件存储
系统框架中集成了上传图片、上传文件等功能,文件具体的存放目录都是在文件存储配置文件 filesystem.php
中进行配置的,框架设计支持已经默认给了一些参数配置,已配置附件存放目录为 public/uploads
,具体配置内容如下所示:
<?php
return [
// 默认磁盘
'default' => env('filesystem.driver', 'local'),
// 磁盘列表
'disks' => [
'local' => [
'type' => 'local',
'root' => app()->getRootPath() . 'public/uploads',
],
'public' => [
// 磁盘类型
'type' => 'local',
// 磁盘路径
'root' => app()->getRootPath() . 'public/uploads',
// 磁盘路径对应的外部URL路径
'url' => '/uploads',
// 可见性
'visibility' => 'public',
],
// 更多的磁盘配置信息
],
];
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25