Giter Club home page Giter Club logo

PConfig

PConfig is a PHP library for parsing configuration. It is lightweight and easy to use.

Supported formats

  • php
  • json
  • xml
  • yaml
  • ini

Installation

composer require oopsguy/pconfig

Usage

<?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 => '-', 
            ]
    ]);

ArrayAccess

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');

APIs

  • set($key, $value)
  • get($key[, $defult])
  • delete($key)
  • exists($key)
  • getConfig($key)
  • setConfig($key, $value)
  • setProvider($provider)
  • setSerializer($serializer)
  • setFile($path)
  • reload()
  • clear()
  • save()

Licence

MIT Licence

BigMouse's Projects

kaptcha-spring-boot icon kaptcha-spring-boot

Kaptcha Spring Boot Starter help you use Google Kaptcha with Spring Boot easier. 一个简单封装了 Kaptcha 验证码库的 Spring Boot Starter

m3u8 icon m3u8

A mini M3U8 downloader written in Golang for downloading and merging TS(Transport Stream) files. 一个迷你 M3U8 视频下载工具。

pconfig icon pconfig

A PHP library for parsing and persisting configuration files (json, yaml, ini, xml and php). 一个 PHP 配置文件工具库,可解析和持久化配置文件内容,简化文件操作。

tiny icon tiny

A tiny Go web library for learning.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.