manifest php,配置 (manifest.php)

## 环境配置

MixPHP 骨架代码中默认采用 [symfony/dotenv](https://packagist.org/packages/symfony/dotenv) 库完成环境配置处理,框架根目录的 `.env` 文件为环境配置文件,环境配置通常配置一些在不同环境中参数值不同的配置信息,如:数据库账号密码等。

>[success] 正确的使用方式:环境配置应该只在 manifest.php 文件中使用,而程序代码中只使用应用清单配置

可配置多个环境配置文件,如:`.env.dev` 、`.env.test` 、`.env.pro`,然后在入口文件中切换使用,以适应不同的环境,修改入口文件中 `$dotenv->load('***')` 方法传入的文件路径即可切换。

~~~php

$dotenv->load(__DIR__ . '/../.env');

~~~

>[info] .env 文件,需要 ls -a 才能在服务器上显示出来。

## 应用清单配置 (manifest.php)

MixPHP 的 App 类实例化时需要传入一些配置信息,配置信息是一个数组,这些信息就是应用清单配置,通常单独存放在一个文件中,这个文件就叫应用清单配置文件。

下面是 `bin/mix.php` 入口文件的部分源码,能看到配置信息是如何导入 App 类的:

~~~

// Run application

$app = new Mix\Console\Application(require __DIR__ . '/../manifest/manifest.php');

$app->run();

~~~

### 配置详情

一个典型的应用配置文件内容如下:

[>> 到 GitHub 查看 manifest.php <

- `commands` 字段内是命令配置信息,详情请查看 "命令行" 章节。

- `beans` 字段内是依赖配置信息,详情请查看 "依赖注入" 章节,最新版本增加了 `beanPath` 字段取代该功能从目录中读取依赖配置。

- `commandPath` 指定命令配置的路径,可以是单个配置文件,也可以是一个配置目录,指定该字段时,`commands` 字段将被覆盖。

- `beanPath` 指定依赖配置的路径,可以是单个配置文件,也可以是一个配置目录,指定该字段时,`beans` 字段将被覆盖。

## 自定义配置

MixPHP 骨架代码中默认采用 [hassankhan/config](https://packagist.org/packages/hassankhan/config) 库完成用户自定义配置处理,该库支持多种配置文件类型:PHP, INI, XML, JSON, and YAML

### [Mix-Skeleton](https://github.com/mix-php/mix-skeleton) 中使用

在 Web 开发骨架中我们建议将自定义配置通过 manifest.php 将配置注入到对应 class 中使用,因此为了能在 manifest.php 中也能获取到配置,我们做了以下处理:

- [bin/mix.php#L10](https://github.com/mix-php/mix-skeleton/tree/v2.1/bin/mix.php#L10) 在入口文件中实例化了全局变量 $config

- [app/functions.php](https://github.com/mix-php/mix-skeleton/tree/v2.1/app/functions.php) 定义了 config() 全局方法,方便快速获取

因此可在任意位置调用:

~~~

// 获取全部配置

config()->all();

// 获取指定配置

config()->get('foo');

// 指定默认值

config()->get('bar', 0);

~~~

### [Mix-Phar-Skeleton](https://github.com/mix-php/mix-phar-skeleton) 中使用

在开发 Phar 单文件命令行时,由于单文件的特殊性,配置文件都在程序代码之外,所以需要启动程序后再加载配置因此框架骨架中配置了 [hassankhan/config](https://packagist.org/packages/hassankhan/config) 库的依赖注入:

- [manifest.php#L109](https://github.com/mix-php/mix-phar-skeleton/blob/master/manifest.php#L109)

可直接在代码中通过依赖注入实例化,再获取配置:

~~~

/** @var \Noodlehaus\Config $config */

$config = context()->get('config');

// 获取全部配置

$config->all());

// 获取指定配置

$config->get('foo');

// 指定默认值

$config->get('bar', 0);

~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值