Как я могу сделать/исправить исходный код php (код c) для чтения массива из php.ini?

У меня есть опыт работы с php, но я новичок в исходном коде php и расширениях php. Я хочу расширить php, чтобы он случайным образом выбирал upload_tmp_dir из массива, а не один фиксированный каталог.

Это не похоже на php, и код чтения ini-файла имеет естественную способность анализировать массивы в ini-файле.

Существует ли какой-либо существующий код или расширение (либо в дереве, либо вне его), которое позволяет сопоставлять массив, определенный ini, с глобальным массивом val в php?

В противном случае, я думаю, я введу инициализирующие значения, такие как «num_upload_dirs», а затем «upload_tmp_dir_1», «upload_tmp_dir_2» и т. д., а затем явно проверю все значения.

ИЛИ написать процедуры разбора строки и создания глобального массива самостоятельно в программе чтения ini-файлов. Оба не очень привлекательны. Любые другие предложения?


person cjp    schedule 27.01.2011    source источник


Ответы (2)


Формат файла ini не поддерживает массивы.

Вам будет лучше, если вы выполните uplaod_tmp_dir_1 и т. д. Вы не получите никакой выгоды от использования синтаксиса массива.

Если подумать, на самом деле меньше байтов. ;)

person Byron Whitlock    schedule 27.01.2011
comment
Спасибо. Я думаю ты прав. Тем не менее, массивы более естественны для обслуживания, поэтому сопровождающему не нужно самим создавать индексы. - person cjp; 28.01.2011
comment
Голосующему против: я знаю, что parse_ini_file будет обрабатывать массивы. Я говорил о низкоуровневом коде c, в котором отсутствует синтаксический сахар исходного кода php. - person Byron Whitlock; 28.01.2011

PHP по умолчанию поддерживает массивы в ini-файлах. ничего латать не надо

ини

key[] = value1
key[] = value2

с этим php

var_dump(parse_ini_file('my.ini'));

возвращается

array(1) {
  ["key"]=>
  array(2) {
    [0]=>
    string(6) "value1"
    [1]=>
    string(6) "value2"
  }
}
person KingCrunch    schedule 27.01.2011
comment
этот вопрос касается источника php и расширения самого php, чтобы изменить способ использования upload_tmp_dir. Похоже, вы говорите об интерпретируемом .php-коде... к тому времени, когда дело доходит до интерпретации .php-кода, местоположение загрузки tmp фиксируется, поэтому мне нужно изменить исходный код php. - person cjp; 28.01.2011
comment
Прочтите еще несколько раз, и я думаю, что вы правы. Я думал о массивах в inis вообще. Я не нашел способа изменить этот каталог во время выполнения (все равно было поздно, файл уже загружен), поэтому: да, верно, ответ устарел. - person KingCrunch; 28.01.2011