Показать сообщение отдельно

  #1  
Старый 02.06.2022, 17:38
Mex-Vision
Постоянный
Регистрация: 01.03.2016
Сообщений: 828
С нами: 5368054

Репутация: 448


По умолчанию

Всем привет!

Недавно создавал тему с демонстрацией своей реализации функции для сохранение массивов в файлы php.

Решил пойти немножко дальше, и написать небольшую библиотеку/пакет для работы с конфигами.

Установка:

С помощью composer: composer require mex-vision/phpconfig

Инициализация:


PHP:


Код:
use
PhpConfig\Config
;
use
PhpConfig\ConfigProvider
;
// Инициализация провайдера.
$provider
=
new
ConfigProvider
(
'path/to/config'
,
'.cfg'
)
;
// Инициализация конфигурации.
$config
=
new
Config
(
$provider
)
;
Возможности:

1.
Автозагрузка конфигов с папки, возможность указать суффикс файлов для фильтрации, например .cfg (site.cfg.php).

2. Удобное чтение конфигов, перемещение по ключам массива через точку и возможность указать параметр по умолчанию, который будет возвращен в случае отсутствия требуемого ключа в массиве. Первым ключом является название файла, без учета суффикса и формата (site.cfg.php). Например:

PHP:


Код:
$config
-
>
get
(
'site.template'
,
'default'
)
;
// В качестве параметра по умолчанию может использовать callback функция
$result
=
$config
-
>
get
(
'site.template'
,
function
(
)
{
return
'default'
;
}
)
;
3. Добавление/изменение конфигов, например:

PHP:


Код:
// Запись в контейнер с конфигами.
$config
-
>
set
(
'site.template'
,
'new_template'
)
;
// Есть возможность добавить сразу массив данных.
$config
-
>
set
(
'site.template'
,
[
'site_template'
=
>
'new_site_template'
]
)
;
4. Сохранение конфигов обратно в файлы:

PHP:


Код:
// Сохраняет конфиги обратно в 'path/to/config/site.cfg.php'.
$config
-
>
save
(
'site'
)
;
// Сохраняет все конфиги.
$config
-
>
save
(
)
;
5.Неограниченное кол-во источников шаблонов для работы с разными директориями вашего проекта и обращение к ним через указанный неймспейсинг:

PHP:


Код:
// Инициализируем новый провайдер:
$newProvider
=
new
ConfigProvider
(
'another/path/to/config'
,
'.cfg'
)
;
// Добавляем его в наш объект и устанавливаем namespace для работы с ним:
$cfg
-
>
addProvider
(
'another'
,
$newProvider
)
;
// Чтение:
$result
=
$config
-
>
get
(
'@another.site.template'
)
;
// Редактирование:
$config
-
>
set
(
'@another.site.template'
,
'new_template'
)
;
// Сохранение:
$config
-
>
save
(
'@another.site'
)
;
// Сохранение всех конфигов с провайдера:
$config
-
>
save
(
'@another'
)
;
Сcылка на GitHub: PhpConfig

Ссылка на Packagist: PhpConfig
 
Ответить с цитированием