# 基础配置

初次接触一个新项目时,会给人一种一筹莫展的感觉,尤其是一个全新的未知的项目,首页我们拿到一个新项目(或新框架),首页我们先看下项目框架的具体架构和设计思路,在上一章节《目录结构》中我们做了详细的介绍,这里我们不做扩展,本章节我们重点介绍下框架的基础配置;

# 项目依赖

框架使用Composer作为依赖包管理工具,在开始使用项目前请务必安装好第三方依赖库,以便项目在实际运行过程中出现缺少依赖或者莫名的报错问题(切记),框架默认集成的依赖如下:

"php": ">=7.1.0",
"topthink/framework": "^6.0.0",
"topthink/think-orm": "^2.0",
"topthink/think-captcha": "^3.0"
1
2
3
4

由于ThinkPHP6框架本身将以前的版本(如5.15.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
1
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'  => [],
        ],
        // 更多的缓存连接
    ],
];

1
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 => '未知',
    ],

];
1
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' => [],
];

1
2
3
4
5
6
7
8
9
10
11

系统中我们自定义了登录验证中间件并在此做了注册配置,可以借助命令 php think make:middleware 中间件名 自定生成文件并到指定目录 app\middleware\ 下,使用也非常简单,有两种使用方式如下所示:

// 中间件
protected $middleware = [
    'checkLogin'
];
1
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,
    //    ...
    //],
];

1
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',
        ],
        // 更多的磁盘配置信息
    ],
];

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25