alex-unruh/dot-notation-config

一个抽象层,用于从数组或文件中获取数据,基于Dflydev\DotAccessData\Data构建

v1.0.0 2022-03-08 12:14 UTC

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'