HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > Общие вопросы программирования
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #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
 
Ответить с цитированием

  #2  
Старый 02.06.2022, 18:09
kick
Флудер
Регистрация: 20.01.2015
Сообщений: 7,201
С нами: 5952720

Репутация: 6527


По умолчанию

Правилом хорошего того является реализация интерфейса ArrayAccess
 
Ответить с цитированием

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

Репутация: 448


По умолчанию

Цитата:
Сообщение от kick  

Правилом хорошего того является реализация интерфейса ArrayAccess
Почитал, спасибо. Думаю действительно стоит внести корректировки.
 
Ответить с цитированием

  #4  
Старый 02.06.2022, 18:31
Desquire
Познавший АНТИЧАТ
Регистрация: 07.05.2015
Сообщений: 1,791
С нами: 5799746

Репутация: 1388


По умолчанию

Обнови композер файл. Тебе нужно установить минимальную версию пхп. У тебя от 8 как я понял.

Возможно пропустил: что будет, если файла нет, но запросить конфиг? Или файл битьій? Или в нем не пхп код?

Я бьі посоветовал еще ставить права на файльі, и папки.

[OFF]

Имхо:

Для себя, на какого-то лютова кастома можно, каждьій начина.щий пхп разраб делает свою цмс)

А так, все так же тянется куча проблем из-за хранения конфигов в файлах.

Не уверен что при наличии приличного количества конфигов, будет вьігоднее по перфомансу чем с базьі с сериалайзом.

[/OFF]
 
Ответить с цитированием

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

Репутация: 448


По умолчанию

Цитата:
Сообщение от Desquire  

Обнови композер файл. Тебе нужно установить минимальную версию пхп. У тебя от 8 как я понял.
Возможно пропустил: что будет, если файла нет, но запросить конфиг? Или файл битьій? Или в нем не пхп код?
Я бьі посоветовал еще ставить права на файльі, и папки.

[OFF]
Имхо:
Для себя, на какого-то лютова кастома можно, каждьій начина.щий пхп разраб делает свою цмс)
А так, все так же тянется куча проблем из-за хранения конфигов в файлах.
Не уверен что при наличии приличного количества конфигов, будет вьігоднее по перфомансу чем с базьі с сериалайзом.
[/OFF]
1) Eсли файла нет, просто не будет найден загруженный файл и вернется значение по умолчанию.

2) Если файл битый или содержимое не PHP не предусмотрел, внесу правки на этот счет, Exception какой нить брошу.

3) Про права не совсем понял. Типа настройки, можно ли сохранять/изменять конфиги определенного провайдера? Можно сделать, идея хорошая, если хочется просто читать и исключить любого рода изменения.

PS: Вы правы по поводу целесообразности использования данного подхода. Делал изначально для себя. Можно использовать при написании инсталятора сайта, когда нужно сохранить/сгенерировать некоторое количество не изменяемых конфигов. Конечно это можно сделать гораздо проще и на заморачиваться над написанием либы. Забыл написать что можно добавить свой файл на лету и сохранить его).

PHP:


Код:
$config
-
>
set
(
'custom'
,
[
'key'
=
'value'
]
)
;
$config
-
>
save
(
'custom'
)
;
// Будет создан файл custom.cfg.php
// Чтение новго конфига
$config
-
>
get
(
'custom.key'
)
;
// value
 
Ответить с цитированием

  #6  
Старый 02.06.2022, 18:55
Desquire
Познавший АНТИЧАТ
Регистрация: 07.05.2015
Сообщений: 1,791
С нами: 5799746

Репутация: 1388


По умолчанию

Цитата:
Сообщение от Mex-Vision  

3) Про права не совсем понял. Типа настройки, можно ли сохранять/изменять конфиги определенного провайдера? Можно сделать, идея хорошая, если хочется просто читать и исключить любого рода изменени
Права на папку и файл)

Там 775,777) Во многих системах проверяется права на файл)

Хотя тут наверно єто будет черезчур)

Тьі не ответил на обновление композера- сделай, а то не красиво)
 
Ответить с цитированием

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

Репутация: 448


По умолчанию

Цитата:
Сообщение от Desquire  

Права на папку и файл)
Там 775,777) Во многих системах проверяется права на файл)
Хотя тут наверно єто будет черезчур)

Тьі не ответил на обновление композера- сделай, а то не красиво)
JSON:


Код:
{
"name"
:
"mex-vision/phpconfig"
,
"type"
:
"library"
,
"autoload"
:
{
"psr-4"
:
{
"PhpConfig\\"
:
"src/"
}
}
,
"authors"
:
[
{
"name"
:
"mex-vision"
,
"email"
:
"mex.vision.dev@gmail.com"
}
]
,
"minimum-stability"
:
"dev"
,
"require"
:
{
"php"
:
">=7.4"
}
}
Это имелось ввиду?
 
Ответить с цитированием

  #8  
Старый 02.06.2022, 20:53
root@localhost:~#
Познавший АНТИЧАТ
Регистрация: 13.07.2016
Сообщений: 1,418
С нами: 5175542

Репутация: 548


По умолчанию

для чего это дело нужно? я тут недавно сел пых изучать просто, знаний ноль, хочется смотреть на примеры простого кода, а тут сложно как то и не понятно куда это может пригодиться))
 
Ответить с цитированием

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

Репутация: 448


По умолчанию

Цитата:
Сообщение от root@localhost:~#  

для чего это дело нужно? я тут недавно сел пых изучать просто, знаний ноль, хочется смотреть на примеры простого кода, а тут сложно как то и не понятно куда это может пригодиться))
Предположим вы написали сайт и хотите сделать инсталятор, допустим как у StressWeb, вам необходимо получить от пользователя доступы к базе данных и сохранить их в массив, к которому потом будете обращаться. Ну и т.п. Хоть данные кешируйте в php файлы.
 
Ответить с цитированием

  #10  
Старый 03.06.2022, 11:10
Desquire
Познавший АНТИЧАТ
Регистрация: 07.05.2015
Сообщений: 1,791
С нами: 5799746

Репутация: 1388


По умолчанию

Цитата:
Сообщение от Mex-Vision  

JSON:


Код:
{
"name"
:
"mex-vision/phpconfig"
,
"type"
:
"library"
,
"autoload"
:
{
"psr-4"
:
{
"PhpConfig\\"
:
"src/"
}
}
,
"authors"
:
[
{
"name"
:
"mex-vision"
,
"email"
:
"mex.vision.dev@gmail.com"
}
]
,
"minimum-stability"
:
"dev"
,
"require"
:
{
"php"
:
">=7.4"
}
}
Это имелось ввиду?
Да)

Но и комиитьі желательно делать, с описанием( а не просто Add)
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.