## 环境配置
框架根目录的 `.env` 文件为环境配置文件,环境配置通常配置一些在不同环境中参数值不同的配置,如:数据库账号密码。
>[success] 正确的打开方式:环境配置只使用在应用配置中,程序中只使用应用配置。
可配置多个环境配置文件,如:`.env.dev` 、`.env.test` 、`.env.pro`,然后在入口文件中切换使用,以适应不同的环境。
在 `bin` 目录的入口文件中切换环境配置文件:
~~~php
// 切换这里载入的文件名称即可
mix\base\Env::load(__DIR__ . '/../.env');
~~~
>[info] .env 文件,需要 `ls -a` 才能在服务器上显示出来。
## 应用配置
MixPHP 的 App 类实例化时需要传入一些配置信息,配置信息是一个数组,这些信息就是应用配置。
通常应用配置会单独存放在一个文件中,这个文件就叫应用配置文件,一个 App 可以有多个配置文件来适应不同环境,但只能使用其中一个。
下面是一个入口文件的源码,能看到配置信息是如何导入 App 类的:
~~~php
$config = require __DIR__ . '/../config/main.php';
(new mix\web\Application($config))->run();
~~~
## 配置详情
一个典型的应用配置文件内容如下:
~~~php
return [
// 基础路径
'basePath' => dirname(__DIR__),
// 控制器命名空间
'controllerNamespace' => 'apps\httpd\controllers',
// 中间件命名空间
'middlewareNamespace' => 'apps\httpd\middleware',
// 全局中间件
'middleware' => [],
// 组件配置
'components' => [
],
// 类库配置
'libraries' => [
],
];
~~~
- 控制器命名空间需要根据实际情况而作修改
~~~
// HTTP应用
'controllerNamespace' => 'apps\模块名称\controllers',
// Console应用
'controllerNamespace' => 'apps\模块名称\commands',
~~~
- `components` 字段内是组件配置信息,详情请查看 "组件" 章节。
- `libraries` 字段内是对象配置信息,详情请查看 "对象" 章节。
## 自定义配置
>[danger] MixPHP 并不建议这样直接获取配置,因为有更好的方式,情请阅读 "组件"、"对象" 两个章节。
配置文件内的全部 `key`,都将变为 App 对象的属性名称,`value` 会成为该属性的值,该方式是 MixPHP 的核心思想,可查看 "对象" 章节了解更多。
因此,我们可以这样获取到配置信息:
~~~
// 方法1
echo app()->basePath;
// 方法2
echo app()->config('libraries.[coroutine.pdo].dsn');
~~~
也就是说,你如果想增加自己的配置信息,在配置文件内增加一个新的字段即可,使用上面的方法即可获取。
但是,MixPHP 并不建议这样直接获取配置,因为:
- 现今的 PHP 开发,几乎所有需求都是采用面向对象的方式封装,所以配置信息最终都会赋值为类的属性,供该类调用。
- 而 MixPHP 提供了 `components`、`libraries` 两种方式可直接面向对象传递配置,所以你不需要再增加新的字段来处理这些问题了,以上两种方式详情请阅读 "组件"、"对象" 两个章节。
- 欢迎使用 MixPHP
- 安装说明
- 常规安装
- 只安装命令行
- Apache/PHP-FPM安装
- 开发与调试
- 开发注意事项
- 调试与错误
- 基础架构
- 目录结构
- 目录设计
- URL访问
- 命名空间
- 自动加载
- 入口文件
- 框架核心
- Application
- 配置
- 对象
- 组件
- 门面
- 系统服务
- 中间件
- 验证器
- 验证器定义
- 验证规则
- 静态调用
- 模型
- 日志
- 命令行
- 简介
- 命令行开发常识
- 创建命令
- 执行与选项
- 控制台程序
- 守护程序
- HTTP 服务
- 简介
- 服务器
- 路由
- 请求
- 响应
- 控制器
- 视图
- Token
- Session
- Cookie
- 文件上传
- 图片处理
- 分页
- 验证码
- WebSocket 服务
- 简介
- 回调函数
- 消息处理器
- 客户端测试
- nginx代理
- 60s无消息断线
- 多进程
- ProcessPoolTaskExecutor
- 流水线模式
- 推送模式
- 在 Supervisor 中使用
- 协程
- 简介
- 如何开启协程
- HTTP 协程开发
- 命令行协程开发
- 客户端
- MySQL
- PDO
- PDOPersistent
- PDOMasterSlave
- PDOCoroutine
- Redis
- Redis
- RedisPersistent
- RedisCoroutine
- 外部工具库
- 简介
- think-orm
- psr-log
- 安全建议
- 常见问题
- 启动多个 HTTP 服务器
- 连接多个数据库
- 如何设置跨域
- mix-httpd service stop 无效
- No such file or directory
- 错误级别配置不生效
- 推进计划
- 文档历史