exts / configured
加载和保存不同类型的PHP数组数据的配置类
2.1.0
2024-05-15 00:11 UTC
Requires
- php: >=8.1
- igorw/get-in: 1.0.*
- league/flysystem: 3.0.*
- symfony/yaml: 6.0.*
Requires (Dev)
- phpunit/phpunit: ^9.0
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
的类即可,稍后我会写一个带有测试的示例。