PHP 配置
最后修改于 2025 年 2 月 16 日
PHP 配置教程展示了如何在 PHP 中创建配置文件。它使用了 hassankhan/config
包。
hassankhan/config
是一个轻量级的配置文件加载器,支持 PHP、INI、XML、JSON 和 YAML 文件。如果使用 YAML 文件,我们需要安装 symfony/yaml
包。
设置 PHP 配置
首先,我们安装必要的软件包。
$ composer req hassankhan/config symfony/yaml
我们使用 composer 安装两个软件包。
composer.json
{ "autoload": { "psr-4": { "App\\": "src/" } }, "require": { "hassankhan/config": "^2.0", "symfony/yaml": "^4.2" } }
这是 composer.json
文件。我们还启用自动加载。
PHP 配置 JSON 示例
在第一个示例中,我们从 JSON 文件中读取配置数据。
config/db.json
{ "app": { "port": 3000 }, "db": { "host": "localhost", "port": 27017, "name": "ydb" } }
我们在 config
目录中有一个 db.json
文件。
read_json_cfg.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 read_json_cfg.php 3000 localhost 27017 ydb
PHP YAML 示例
在第二个示例中,我们从 YAML 文件中读取配置数据。
config/db.yaml
app: port: 3000 db: host: localhost port: 27017 name: ydb
这是 db.yaml
文件。
read_yaml_cfg.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
文件中读取配置文件。
$conf = new Config('config/db.yaml', new Yaml);
在第二个参数中,我们提供配置解析器。
$ php read_yaml_cfg.php 3000 localhost 27017 ydb
合并配置文件
merge
方法将配置文件分组。
config/db.yaml
app: port: 3000 db: host: localhost port: 27017 name: ydb
这是第一个配置文件。
config/app.yaml
version: 2.0-dev
这是第二个配置文件。
merging.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 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 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 教程。