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

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

Репутация: 448


По умолчанию

На днях было необходимо сохранять массивы в конфиг файлы, написал функцию для преобразования массива в строковое представление. Возможно кому-то будет нужно, оставлю тут.

PHP:


Код:
/**
 * Возвращает интерпретируемое строковое представление массива.
 * @param array $array Массив.
 * @param bool $beautify Форматировать ли возвращаемую строку.
 * @return string Интерпретируемое строковое представление массива.
 */
function
array_export
(
array
$array
,
bool
$beautify
,
int
$iteration
=
0
)
:
string
{
if
(
empty
(
$array
)
)
return
"[]"
;
$tab
=
$beautify
?
str_repeat
(
"\t"
,
$iteration
)
:
""
;
$result
=
$beautify
?
"[\n"
:
"["
;
$count
=
count
(
$array
)
;
foreach
(
$array
as
$key
=
>
$val
)
{
$count
--
;
$result
.
=
$beautify
?
(
$tab
.
"\t"
)
:
""
;
$result
.
=
to_array_element
(
$key
)
;
$result
.
=
$beautify
?
" => "
:
"=>"
;
if
(
is_array
(
$val
)
)
$result
.
=
array_export
(
$val
,
$beautify
,
$iteration
+
1
)
;
else
$result
.
=
to_array_element
(
$val
)
;
$result
.
=
(
$count
>
0
)
?
","
:
""
;
$result
.
=
$beautify
?
"\n"
:
""
;
}
return
$beautify
?
$result
.
$tab
.
"]"
:
$result
.
"]"
;
}
function
to_array_element
(
$value
)
:
string
{
if
(
is_int
(
$value
)
or
is_float
(
$value
)
)
return
$value
;
if
(
is_bool
(
$value
)
)
return
var_export
(
$value
,
true
)
;
if
(
is_null
(
$value
)
)
return
'null'
;
if
(
is_object
(
$value
)
)
return
get_class
(
$value
)
.
"::class"
;
return
'"'
.
(
(
string
)
$value
)
.
'"'
;
}
Кормим массив, и получаем его строковое представление. В отличии от var_export использует синтаксис массивов PHP 5.4+ и поддерживает форматирование (табуляция, переносы строк и т.п.).

Как использовать?

PHP:


Код:
$config = [
    'config' => [
        'float' => 1.2,
        'string' => 'str',
        'bool' => true,
        'null' => null,
        'object' => new \mmopane\validate\Validator(),
    ]
];

file_put_contents("config.php", " [
        "float" => 1.2,
        "string" => "str",
        "bool" => true,
        "null" => null,
        "object" => mmopane\validate\Validator::class
    ]
];
 
Ответить с цитированием

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

Репутация: 1388


По умолчанию

[OFF]Почему не использовать yaml\yml файлы?)[/OFF]
 
Ответить с цитированием

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

Репутация: 448


По умолчанию

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

[OFF]Почему не использовать yaml\yml файлы?)[/OFF]
Они в браузере палятся. Понимаю что можно и нужно выносить за директорию веб сервера, но это донастройка и т.п. Можно и env использовать, да хоть xml, лишь бы выше точки входа.
 
Ответить с цитированием

  #4  
Старый 04.05.2022, 17:28
Solution
Постоянный
Регистрация: 06.09.2017
Сообщений: 505
С нами: 4571066

Репутация: 251


По умолчанию

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

Они в браузере палятся. Понимаю что можно и нужно выносить за директорию веб сервера, но это донастройка и т.п. Можно и env использовать, да хоть xml, лишь бы выше точки входа.
nginx можешь конфигурировать как тебе нравится, будет показывать только то что указано

А вообще по конфигу, в .env вынести основные настройки бд и прочего что необходимо для функционирования сайта, при инсталле cms их заполнять, остальной конфиг пользовательский хранить в бд, при первой загрузки дергать в синглтон и юзать его
 
Ответить с цитированием

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

Репутация: 448


По умолчанию

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

nginx можешь конфигурировать как тебе нравится, будет показывать только то что указано
А вообще по конфигу, в .env вынести основные настройки бд и прочего что необходимо для функционирования сайта, при инсталле cms их заполнять, остальной конфиг пользовательский хранить в бд, при первой загрузки дергать в синглтон и юзать его
Можно и так=) Суть не в том как нужно и правильно делать. Я просто поделился огрызком кода, возможно кому-то пригодится)
 
Ответить с цитированием

  #6  
Старый 04.05.2022, 21:27
Gaikotsu
Флудер
Регистрация: 15.08.2015
Сообщений: 2,267
С нами: 5654645

Репутация: 0


По умолчанию

а чем использование функций serialize / unserialize не устроило?
 
Ответить с цитированием

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

Репутация: 448


По умолчанию

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

а чем использование функций serialize / unserialize не устроило?
Конфиги в txt файлах в формате json?
 
Ответить с цитированием
Ответ





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


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




ANTICHAT ™ © 2001- Antichat Kft.