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
<?phpuse 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.php3000localhost27017ydb
这是输出。
PHP YAML 示例
在第二个示例中,我们从 YAML 文件读取配置数据。
config/db.yaml
app:port: 3000db:host: localhostport: 27017name: ydb
这是db.yaml文件。
read_yaml_cfg.php
<?phpuse 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.php3000localhost27017ydb
This is the output.
合并配置文件
merge()方法对配置文件进行分组。
config/db.yaml
app:port: 3000db:host: localhostport: 27017name: ydb
这是第一个配置文件。
config/app.yaml
version: 2.0-dev
这是第二个配置文件。
merging.php
<?phpuse 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
<?phpnamespace 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
<?phprequire('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 教程。
