phppkg/config

Config manage, load, get. Supports INI,JSON,YAML,NEON,PHP format file

v1.1.4 2022-08-07 08:48 UTC

README

License Php Version Latest Stable Version Actions Status

🗂 Config load, management, merge, get, set and more.

  • Config data load, management
  • Support load multi config data, will auto merge
  • Supports INI,JSON,YAML,TOML,NEON,PHP format file
  • Support for exporting configuration data to file
  • Language data management

中文说明

Install

composer

  • Required PHP 8.0+
composer require phppkg/config

Usage

create and load config data. load multi file, will auto merge data.

use PhpPkg\Config\ConfigBox;

$config = ConfigBox::new();
$config->loadFromFiles([
    __DIR__ . '/test/testdata/config.ini',
    __DIR__ . '/test/testdata/config.neon',
    __DIR__ . '/test/testdata/config.yml',
    __DIR__ . '/test/testdata/config.toml',
]);

Created in other ways

use PhpPkg\Config\ConfigBox;

$config = ConfigBox::newFromFiles([
    // ... config file list
]);

$config->loadIniFile('path/to/my.ini')

More load methods

  • loadFromFiles(array $filePaths, string $format = '')
  • loadFromStrings(string $format, string ...$strings)
  • loadFromSteam(string $format, resource $stream)
  • loadIniFile(string $filepath)
  • loadJsonFile(string $filepath)
  • loadJson5File(string $filepath)
  • loadYamlFile(string $filepath)
  • loadPhpFile(string $filepath)

Dump data

// dump config
vdump($config->getData());

Output:

CALL ON PhpPkg\ConfigTest\ConfigBoxTest(24):
array(7) {
  ["name"]=> string(6) "inhere"
  ["age"]=> int(89)
  ["atIni"]=> string(6) "value0"
  ["arr0"]=> array(3) {
    [0]=> string(2) "ab"
    [1]=> int(23)
    [2]=> string(2) "de"
  }
  ["map0"]=> array(2) {
    ["key0"]=> string(4) "val0"
    ["key1"]=> string(4) "val1"
  }
  ["atNeon"]=> string(6) "value1"
  ["atYaml"]=> string(6) "value2"
  ["atToml"]=> string(6) "val at toml"
}

Get value

/** @var PhpPkg\Config\ConfigBox $config */
$config->getInt('age'); // int(89)
$config->getString('name'); // string('inhere')
$config->get('arr0');
$config->get('map0');

// get value by key-path.
$config->getInt('arr0.1'); // int(23)
$config->getString('map0.key0'); // string('val0')

Set value

/** @var PhpPkg\Config\ConfigBox $config */
$config->set('name', 'INHERE');
$config->set('map0.key0', 'new value');

// set multi at once
$config->sets([
    'key1' => 'value1',
    'key2' => 'value2',
    // ...
]);

Export to file

Export config data to file.

use PhpPkg\Config\ConfigBox;

/** @var ConfigBox $config */
$config->exportTo('/path/to/file.json');
$config->exportTo('/path/to/my.conf', ConfigBox::FORMAT_YAML);

PHPPkg Projects

License

MIT