 |

04.05.2022, 08:36
|
|
Постоянный
Регистрация: 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
]
];
|
|
|

04.05.2022, 14:12
|
|
Познавший АНТИЧАТ
Регистрация: 07.05.2015
Сообщений: 1,791
С нами:
5799746
Репутация:
1388
|
|
[OFF]Почему не использовать yaml\yml файлы?)[/OFF]
|
|
|

04.05.2022, 14:31
|
|
Постоянный
Регистрация: 01.03.2016
Сообщений: 828
С нами:
5368054
Репутация:
448
|
|
Сообщение от Desquire
[OFF]Почему не использовать yaml\yml файлы?)[/OFF]
Они в браузере палятся. Понимаю что можно и нужно выносить за директорию веб сервера, но это донастройка и т.п. Можно и env использовать, да хоть xml, лишь бы выше точки входа.
|
|
|

04.05.2022, 17:28
|
|
Постоянный
Регистрация: 06.09.2017
Сообщений: 505
С нами:
4571066
Репутация:
251
|
|
Сообщение от Mex-Vision
Они в браузере палятся. Понимаю что можно и нужно выносить за директорию веб сервера, но это донастройка и т.п. Можно и env использовать, да хоть xml, лишь бы выше точки входа.
nginx можешь конфигурировать как тебе нравится, будет показывать только то что указано
А вообще по конфигу, в .env вынести основные настройки бд и прочего что необходимо для функционирования сайта, при инсталле cms их заполнять, остальной конфиг пользовательский хранить в бд, при первой загрузки дергать в синглтон и юзать его
|
|
|

04.05.2022, 18:40
|
|
Постоянный
Регистрация: 01.03.2016
Сообщений: 828
С нами:
5368054
Репутация:
448
|
|
Сообщение от Solution
nginx можешь конфигурировать как тебе нравится, будет показывать только то что указано
А вообще по конфигу, в .env вынести основные настройки бд и прочего что необходимо для функционирования сайта, при инсталле cms их заполнять, остальной конфиг пользовательский хранить в бд, при первой загрузки дергать в синглтон и юзать его
Можно и так=) Суть не в том как нужно и правильно делать. Я просто поделился огрызком кода, возможно кому-то пригодится)
|
|
|

04.05.2022, 21:27
|
|
Флудер
Регистрация: 15.08.2015
Сообщений: 2,267
С нами:
5654645
Репутация:
0
|
|
а чем использование функций serialize / unserialize не устроило?
|
|
|

05.05.2022, 05:58
|
|
Постоянный
Регистрация: 01.03.2016
Сообщений: 828
С нами:
5368054
Репутация:
448
|
|
Сообщение от Gaikotsu
а чем использование функций serialize / unserialize не устроило?
Конфиги в txt файлах в формате json?
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|