Я не знаю, объясняет ли заголовок это очень хорошо, поэтому вот что я пытаюсь достичь.
С помощью этого скрипта люди могут на лету изменять значение переменных конфигурации следующим образом:
Config::write('General.load', array('plugin1','plugin2'), true);
В этом примере он изменяет переменную конфигурации General.load на массив и устанавливает для третьего параметра значение true, что означает, что его можно сохранить.
Я пытаюсь включить метод сохранения, когда пользователь вызывает Config::save()
, он перебирает все переменные конфигурации, для которых записан третий параметр, для которого установлено значение true.
Он отлично работает для логических значений, строк, целых чисел, чисел с плавающей запятой и т. Д. Но когда речь идет о массивах, по умолчанию он просто записывает в файл «массив», а не «массив» («plugin1», «plugin2») ».
Итак, я начал разработку небольшого скрипта, который конвертирует массивы в массив на основе строк.
Вот функция (мне пришлось поместить ее на pastebin, отформатированный здесь странно):
http://pastebin.com/HsUG9n5D
Работает, до некоторой степени.
Если вы поставите что-то вроде этого:
$array_to_string = '';
$array = array(
'welcome',
'to',
'my',
array('website')
);
array_build($array_to_string, $array, 0);
die($array_to_string);
Будет выведено:
array('welcome', 'to', 'my', array('website')),
Это почти сработало. Однако, если я введу что-то вроде этого:
$array_to_string = '';
$array = array(
'welcome',
'to',
'my',
array('website'),
array(array('goodbye', 'foo' => 'bar'))
);
array_build($array_to_string, $array, 0);
die($array_to_string);
Вывод:
array('welcome', 'to', 'my', array('website')array(array('goodbye', 'foo' => 'bar'), ))
Я перебрал код, и я не совсем уверен, что я могу сделать, чтобы это исправить. Ссылка на переменную для меня все еще немного сложна.
Если у кого-то есть идеи о том, что я сделал неправильно, сообщите нам.
Приветствие.