alex-unruh / dot-notation-config
一个抽象层,用于从数组或文件中获取数据,基于Dflydev\DotAccessData\Data构建
v1.0.0
2022-03-08 12:14 UTC
Requires
- php: >=7.2
- dflydev/dot-access-data: ^3.0
This package is auto-updated.
Last update: 2024-09-08 17:31:15 UTC
README
这个库基于Laravel配置概念。它重视性能,并建立在Dflydev Dot Access data库之上。
不同之处在于我们还可以在运行时执行中从文件而不是仅从数组访问数据。
如何安装
composer require alex-unruh/dot-notation-config
与文件一起使用
你可以拥有尽可能多的配置文件
// config/app.php return [ 'app_name' => 'My App', 'app_version' => '1.0.0', 'connection_params' => [ 'host' => 'localhost', 'dbname' => 'my_database', 'user' => 'root', 'password' => '', 'port' => '3306' ] ]; // config/messages.php return [ 'internal_error' => 'Internal server error', 400 => 'Bad request' ]; // index.php use AlexUnruh\Config; Config::setDir('/config'); // Search data in /config/app.php file echo Config::get('app.app_name'); // 'My App' echo Config::get('app.connection_params.host'); // 'localhost' // Search data in /config/messages.php file echo Config::get('messages.400'); // 'Bad request' print_r(Config::get('app')); // Returns all the array data placed in the app file.
与虚拟数据一起使用
// index.php use AlexUnruh\Config; $data = [ 'app_name' => 'My App', 'app_version' => '1.0.0', 'connection_params' => [ 'host' => 'localhost', 'dbname' => 'my_database', 'user' => 'root', 'password' => '', 'port' => '3306' ] ]; Config::setData('my_data', $data); echo Config::get('my_data.app_name'); // 'My App' echo Config::get('my_data.connection_params.host'); // 'localhost' print_r(Config::get('my_data')); // Returns all the array data placed in the my_data array.
方法
方法与Dflydev Dot Access data中提供的相同。不同之处在于点符号中的第一个参数是文件或虚拟配置集别名,这是在上述setDir或setData方法中定义的。
方法:setDir, setData, get, set, has, remove 和 append。
// $my_config_dir = '/my-config-dir' Config::setDir($my_config_dir); // $my_array = ['app_name' => 'My App', 'app_version' => '1.0.0'] Config::setData($my_array); // $my_array_search = 'app.app_name' // $default_if_key_not_exists = 'My App' Config::get($my_array_search, $default_if_key_not_exists); // 'My App' // $my_array_item = 'app.name' // $my_new_value = 'My New App Name' Config::set($my_array_item, $my_new_value); // $my_array_data = 'app' // $the_key_im_looking_for = 'app_version' Config::has($my_array_data, $the_key_im_looking_for); // true // $my_array_item = 'app.app_licence' // $value_to_append = 'MIT' Config::append($my_array_item, $value_to_append); // $my_array_item = 'app' // $value_to_remove = 'app_licence' Config::remove($my_array_item, $value_to_remove);
技巧
由于库只有静态方法,您可以在任何时间或任何文件中设置配置文件目录,在通过类的方法操作数据之前,不必担心它...
在入口点文件中定义配置目录,然后不必再担心它...
// public/index.php $config_path = $_SERVER['DOCUMENT_ROOT'] . $_ENV['BASE_PATH'] . '/config'; Config::setDir($config_path); // controllers/services/MyService.php echo Config::get('app.app_name'); // 'My App'