exts/configured

加载和保存不同类型的PHP数组数据的配置类

2.1.0 2024-05-15 00:11 UTC

This package is auto-updated.

Last update: 2024-09-15 00:49:13 UTC


README

这是一个用于将不同类型的配置文件加载到数组中,并能够使用点符号或直接访问数组数据来轻松管理配置数据的库。

安装

composer require exts/configured:1.*

示例

    use Exts\Configured\ConfigLoader;
    use Exts\Configured\Loader\YAML;
    
    $config = new ConfigLoader(new Yaml(__DIR__ . '/config'));
    
    // load data directly from file using dot notation
    // database = filename 'database.yml'
    //
    // yaml data example:
    // -------------------
    //  user: 'example'
    //  pass: 'examplepwd'
    //  host: '127.0.0.1'
    //  tble: 'example_table'
    // -------------------
    
    $dbUser = $config->get('database.user', 'root');
    $dbPass = $config->get('database.pass', 'pass');
    $dbTble = $config->get('database.tble', 'example');
    $dbHost = $config->get('database.host', 'localhost');
    
    var_dump($dbUser, $dbPass, $dbTble, $dbHost);
    
    // you can also load the data as an array object
    // this takes a filename directly you can include or exclude the extension 'yml' as an example
    $db = $config->getArrayObject('database');
    
    // you can access the array data directly like so:
    $dbUser = $db['user'] ?? 'root';
    
    // you can access the data using dot notation lets say our data looked like laravel for example:
    // ---------------------
    // default: 'mysql'
    // connections:
    //   mysql:
    //     driver: 'mysql'
    //     host: 'localhost'
    //     database: ''
    //     username: ''
    //     password: ''
    //     charset: 'utf8'
    //     collation: 'utf8_unicode_ci'
    //     prefix: ''
    // ---------------------
    // Then we could do something like:
    
    $dbUser = $db->get('connections.mysql.username', 'root');
    
    // We can also edit or add mysql data directly using dot notation like so:
    $db->set('connections.mysql.username', 'example_user');
    var_dump($db['connections']['mysql']['username']);
    
    // Which I think is pretty cool_
    

使用ConfigStorage保存ConfigArray对象(自v1.1起)

    use Exts\Configured\ConfigArray;
    use Exts\Configured\ConfigStorage;
    use Exts\Configured\Storage\YAML;
    
    $saveFile = 'example.yml';
    $saveDirectory = __DIR__ . '/config/';
    
    $exampleArrayObject = new ConfigArray(['example', 'data']);
    
    $exampleStorage = new ConfigStorage(new YAML($saveDirectory));
    $exampleStorage->store($saveFile, (array) $exampleArrayObject);

自定义加载器

自定义加载器非常简单,只需创建一个实现LoaderInterface的类即可,稍后我会写一个带有测试的示例。