PConfig is a PHP library for parsing configuration. It is lightweight and easy to use.
- php
- json
- xml
- yaml
- ini
composer require oopsguy/pconfig
<?php use pconfig\PConfig; use pconfig\provider\impl\FileProvider; use pconfig\serializer\impl\JSONSerializer; $config = new PConfig('config-file.json'); $config = new PConfig([ 'file' => 'config-file.json' ]); $config = new PConfig([ 'data' => [ 'key' => 'value' // more... ] ]); $config->setSerializer(new JSONSerializer()); $config->setProvider(new FileProvider('config/a.json')); $config = new PConfig([ 'file' => 'config-file.json', 'serializer' => new JSONSerializer(), ]); $config = new PConfig([ 'serializer' => new JSONSerializer(), 'provider' => new FileProvider('config-file.json'), ]);
<?php use pconfig\PConfig; use pconfig\serializer\impl\YAMLSerializer; use pconfig\provider\impl\FileProvider; // PHP array // Automatically detect file extension and select a suitable serializer $config = new PConfig("config/config.php"); echo $config->get("app"); $config->delete("version"); $config->set('debug', false); $config->set("settings.key", "new value"); $config->save(); // handle JSON $jsonConfig = new PConfig('config/config.json'); $jsonConfig->set('homepage', 'https://github.com'); // Save as temp.json file $jsonConfig->setFile('config/temp.json'); $jsonConfig->save(); // Parsing YAML // Explicitly specify a YAML serializer $serializer = new YAMLSerializer(); $provider = new FileProvider('config/settings.yaml'); $extConfig = new PConfig([ 'provider' => $provider, 'serializer' => $serializer ]); $extConfig->set('type', 'yaml'); $extConfig->save();
The default key separator is a dot-notation ..
key1.key2.key3
You can use PConfig::CONFIG_KEY_EXTRACT_SEPARATOR to custom your own separator.
PConfig::CONFIG_KEY_EXTRACT_SEPARATOR => '-',
key1-key2-key3
<?php use pconfig\PConfig; use pconfig\provider\impl\FileProvider; use pconfig\serializer\impl\JSONSerializer; $config = new PConfig([ // Specify the serializer 'serializer' => new JSONSerializer(), 'provider' => new FileProvider('config/config.php'), 'config' => [ // Set the key separator PConfig::CONFIG_KEY_EXTRACT_SEPARATOR => '-', ] ]);
PConfig has implemented ArrayAccess interface, you can access configuration by array operations.
<?php use pconfig\PConfig; // Access by index $json = new PConfig('./config/arrayaccess.json'); $json['status'] = true; $json['data'] = [ 'page' => 1, 'pageSize' => 10, 'pages' => 2, 'total' => 13, 'list' => [ [ 'username' => 'oopsguy', 'gender' => '男' ] ] ]; $json['msg'] = 'ok'; $json['delData'] = 'XHSYSYSDkoksoada8dsaidsa9d8adsa'; // unset and isset API var_dump(isset($json['delData'])); unset($json['delData']); var_dump(isset($json['delData'])); // Save to file $json->save();
Nested configuration.
$config->set('level1.level2.level3', "Level end"); $config->delete('level1.level2');
set($key, $value)get($key[, $defult])delete($key)exists($key)getConfig($key)setConfig($key, $value)setProvider($provider)setSerializer($serializer)setFile($path)reload()clear()save()
MIT Licence