多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# PHP 配置教程 > 原文: [https://zetcode.com/php/config/](https://zetcode.com/php/config/) PHP 配置教程显示了如何在 PHP 中创建配置文件。 它使用`hassankhan/config`包。 `hassankhan/config`是一种轻量级的配置文件加载器,支持 PHP,INI,XML,JSON 和 YAML 文件。 如果使用 YAML 文件,则需要安装`symfony/yaml`包。 ## 安装 PHP 配置 首先,我们安装必要的包。 ```php $ composer req hassankhan/config symfony/yaml ``` 我们使用 composer 安装了两个包。 `composer.json` ```php { "autoload": { "psr-4": { "App\\": "src/" } }, "require": { "hassankhan/config": "^2.0", "symfony/yaml": "^4.2" } } ``` 这是`composer.json`文件。 我们还启用了自动加载功能。 ## PHP 配置 JSON 示例 在第一个示例中,我们从 JSON 文件读取配置数据。 `config/db.json` ```php { "app": { "port": 3000 }, "db": { "host": "localhost", "port": 27017, "name": "ydb" } } ``` 我们在`config`目录中有`db.json`。 `read_json_cfg.php` ```php <?php use Noodlehaus\Config; require('vendor/autoload.php'); // $conf = Config::load('config/db.json'); $conf = new Config('config/db.json'); echo $conf->get('app.port') . "\n"; echo $conf->get('db.host') . "\n"; echo $conf->get('db.port') . "\n"; echo $conf->get('db.name') . "\n"; ``` 我们使用`Config::load()`或`Config()`加载配置文件。 使用`get()`方法检索这些值。 点字符用于遍历属性的层次结构。 ```php $ php read_json_cfg.php 3000 localhost 27017 ydb ``` 这是输出。 ## PHP YAML 示例 在第二个示例中,我们从 YAML 文件读取配置数据。 `config/db.yaml` ```php app: port: 3000 db: host: localhost port: 27017 name: ydb ``` 这是`db.yaml`文件。 `read_yaml_cfg.php` ```php <?php use Noodlehaus\Config; use Noodlehaus\Parser\Yaml; require('vendor/autoload.php'); $conf = new Config('config/db.yaml', new Yaml); echo $conf->get('app.port') . "\n"; echo $conf->get('db.host') . "\n"; echo $conf->get('db.port') . "\n"; echo $conf->get('db.name') . "\n"; ``` 该示例从`db.yaml`文件读取配置文件。 ```php $conf = new Config('config/db.yaml', new Yaml); ``` 在第二个参数中,我们提供配置解析器。 ```php $ php read_yaml_cfg.php 3000 localhost 27017 ydb ``` This is the output. ## 合并配置文件 `merge()`方法对配置文件进行分组。 `config/db.yaml` ```php app: port: 3000 db: host: localhost port: 27017 name: ydb ``` 这是第一个配置文件。 `config/app.yaml` ```php version: 2.0-dev ``` 这是第二个配置文件。 `merging.php` ```php <?php use Noodlehaus\Config; use Noodlehaus\Parser\Yaml; require('vendor/autoload.php'); $conf = Config::load('config/db.yaml', new Yaml); $conf2 = Config::load('config/app.yaml', new Yaml); $conf->merge($conf2); echo $conf->get('db.port') . "\n"; echo $conf->get('db.name') . "\n"; echo $conf->get('version') . "\n"; ``` 在示例中,我们合并了两个配置文件。 我们可以使用一个对象访问两个文件的属性。 ## 使用`AbstractConfig`进行代码配置 我们可以使用`AbstractConfig`在代码中指定配置详细信息。 `src/Config/AbstractConfig.php` ```php <?php namespace App\Config; use Noodlehaus\AbstractConfig; class AppConfig extends AbstractConfig { protected function getDefaults() { return [ 'host' => 'localhost', 'port' => 80, 'servers' => [ 'host1', 'host2', 'host3' ] ]; } } ``` 该配置在`AbstractConfig`的`getDefaults()`文件中指定。 `code_config.php` ```php <?php require('vendor/autoload.php'); use Noodlehaus\Config; use App\Config\AppConfig; $conf = new AppConfig([]); echo $conf->get('host') . "\n"; echo $conf->get('port') . "\n"; echo $conf->get('servers')[0] . "\n"; ``` 该示例从代码读取配置。 在本教程中,我们展示了如何使用`hassankhan/config`包读取 PHP 中的配置文件。 列出[所有 PHP](/all/#php) 教程。