Так может я не буду делать? :)
AleXp 06.11.2005 16:06
/ 06.11.2005 16:07
Что-то мы в параллель клепаем одно и тоже. А смысл? Может ты доделаешь класс 'ini'? Там надо-то всего:
1. ^get[param;section] - получение значения параметра $param из секции $section. Это уже сделано - в предыдущем треде про *.ini.
2. ^add[param;value;section] - добавление или (если уже есть!) изменение параметра $param со значением $value в секции $section. Проверить есть или нет можно предварительно вызвав ^get[$param;$section] Если параметр уже задан каким-либо значением, то тут конечно повозиться придется работая со строкой дабы не коверкать сильно каракули того админа, который писал конф.файл .ini ручками :( Ну то есть: надо "поймать" начало строки с параметром, определить где она заканчивается, и заменить в ней смтарое значение параметра на новое ($value). Потом "собрать" всю строку по новой и вывести в .ini файл. Не забыть все залочить на время операции дабы два админа не законфликтовали.
Во всей этой афере не удасться пользоваться операторами типа ^строка.split[разделитель], потому как они на выходе создают парсер3-таблицы, а у нас в исходном .ini файле вполне могут быть табы в любом количестве. Ну да на то есть ^строка.pos[подстрока] :)
3. Ну и: ^delete[param;section] - удаление параметра $param из секции $section.
Везде где $section не задана в явном виде подразумеваем секцию 'Default', например. ^if(!def $section){$section[Default]} в начале методов - всего делов-то.
Наверное все. Замечательно получается упражнение на работу с плохо структурированными строками. После выполнения "задания":) можно будет лекции по регулярным выражениям читать. В том случае, если задание будет выполнено успешно, разумеется :)