StartMVC开发手册

可以快速上手的开发文档

手册目录

配置文件

Config配置文件

StartMVC框架的配置系统提供了一种简单、灵活的方式来管理应用程序的各种配置。配置系统支持多环境配置、点语法访问、配置分组等特性,使开发者能够轻松管理和访问应用配置。

配置文件

配置文件位于应用的config目录下,支持以下类型:

  1. 基础配置文件 - common.php:包含应用的基本配置
  2. 环境配置文件 - {ENV}.php:根据环境变量ENV加载对应的配置文件
  3. 本地配置文件 - local.php:开发者个人配置,通常不纳入版本控制
  4. 模块配置文件 - {module}.php:特定模块的配置文件

StartMVC自带了cache(缓存配置)、common(系统配置)、database(数据库配置)、pagination(分页配置)、route(路由配置)、middleware(中间件配置)等配置文件。

配置加载机制

配置系统采用懒加载机制:

  • common.php配置在首次使用配置系统时自动加载
  • 其他配置文件在首次被访问时按需加载
  • 所有加载过的配置都会被缓存,避免重复加载

配置加载优先级:local.php > {ENV}.php > common.php

使用方法

助手函数

框架提供了config()助手函数,是访问配置的最简单方式:

// 获取所有配置
$allConfig = config();

// 获取特定配置项
$appName = config('app_name');
$dbHost = config('database.host');

// 设置配置
config('site.title', '我的网站');

// 批量设置配置
config([
    'site.title' => '我的网站',
    'site.description' => '网站描述'
]);

// 显式加载配置文件
$dbConfig = config('@database');

config() 函数的实现具有以下特点:

1.当不带参数调用时,返回所有配置( Config::get() )

2.当参数以 @ 开头时,会调用 Config::load() 方法按需加载指定的配置文件

3.当参数是数组时,会循环设置多个配置项

4.当有两个参数时,会设置单个配置项

5.其他情况下,获取指定的配置项

直接使用Config类

也可以直接使用Config类:

use startmvc\core\Config;

// 获取配置
$host = Config::get('database.mysql.host');

// 提供默认值的用法 - 当配置项不存在时返回默认值
$host  = Config::get('database.mysql.host', 'localhost');

// 设置配置
Config::set('app.debug', true);

// 检查配置是否存在
if (Config::has('redis.port')) {
    // 使用配置
}

// 加载特定配置文件
$redisConfig = Config::load('database');

// 获取配置分组
$dbSettings = Config::group('database');


点语法

配置系统支持使用点语法访问嵌套配置:

// 访问数据库配置
$driver = config('database.driver');  // 返回 'mysql'
$mysqlHost = config('database.connections.mysql.host');  // 返回 'localhost'
$mysqlPort = config('database.connections.mysql.port');  // 返回 3306

示例

配置文件示例

// config/common.php
return [
    'debug' => true,	//Debug模式,开发过程中开启,生产环境中请关闭
    'trace' => true,	//是否开启调试追踪,生产环境中请关闭
    'timezone' => 'Asia/Shanghai',	//系统时区
    'url_suffix' => '.html',	//URL后缀
    'default_module' => 'home',	//默认模块
    'default_controller' => 'Index',	//默认控制器
    'default_action' => 'index',	//默认方法
    'urlrewrite' => true,	//是否Url重写,隐藏index.php,需要服务器支持和对应的规则
    'session_prefix' => '',	//Session前缀
    'cookie_prefix' => '',	//Cookie前缀
    'locale'  => 'zh_cn',	//指定默认语言,小写
    'db_auto_connect'  => true,	//是否开启数据库自动连接
    'theme'  => '',	//指定模板子目录,方便多风格使用,为空时模板文件在view下
];

// config/database.php
return [
    'default' => 'mysql',
    'mysql' => [
        'host' => 'localhost',
        'database' => 'startmvc',
        'username' => 'root',
        'password' => '',
        'charset' => 'utf8mb4'
    ]
];
// config/cache.php
return [
    'drive' => 'file', //默认驱动支持file,redis缓存
    'file'=> [
        'cacheDir'=>'cache/',
        'cacheTime'=>3600
    ],
    'redis' => [
        'host' => '127.0.0.1',
        'port' => 6379,
        'password' => '',
        'database' => 0,
        'cacheTime'=>3600
    ],
];

使用示例

// 获取系统调试模式
$debug = config('debug');

// 获取数据库连接信息
$dbConfig = config('@database');
$dbDriver = config('database.driver');
$dbHost = config('database.connections.mysql.host');
$dbName = config('database.connections.mysql.database');

// 设置调试模式
config('debug', false);

// 检查配置是否存在
if (Config::has('database.connections.mysql.port')) {
    $port = config('database.connections.mysql.port');
} else {
    config('database.connections.mysql.port', 3306);
}

// 获取数据库配置分组
$allDbSettings = Config::group('database');

// 获取缓存配置
$cacheDriver = config('cache.drive');
$redisHost = config('cache.redis.host');