ZCONF — API
| Вызов | Поведение |
|---|---|
Parser::parseString(string $input, bool $resultAsObject = false) | Разобрать текст; массив, stdClass или null для пустого документа |
Parser::parseFile(string $input, bool $resultAsObject = false) | Прочитать и разобрать файл |
(new Parser())->parse(string $input, bool $resultAsObject = false) | Разобрать текст экземпляром парсера |
parse — метод экземпляра. Для статического вызова используйте parseString или parseFile, а не Parser::parse.
Режим resultAsObject меняет только верхний уровень: вложенные массивы не преобразуются рекурсивно. В этом режиме даже пустой документ представлен stdClass.
Builder
Заголовок раздела «Builder»| Вызов | Назначение |
|---|---|
new Builder(int $indent = 4) | Создать накопитель текста |
addValue(string $key, $value, string $comment = '') | Добавить значение в текущий контекст |
addTable(string $key) | Начать таблицу |
addArrayOfTable(string $key) | Начать элемент массива таблиц |
addComment(string $comment) | Добавить комментарий |
getString(): string | Получить накопленный документ |
Методы add возвращают Builder для цепочки вызовов. Допустимы string, int, float, bool, null, array и DateTime. DateTimeImmutable не является поддерживаемой заменой DateTime в проверке типа этого Builder.
Для строк действует особое правило: начальный символ @ выбирает literal-строку и удаляется при выводе. Поэтому значение, которое действительно должно начинаться с @, нельзя без проверки передавать обычным путём как произвольный пользовательский текст: убедитесь, что полученный документ сохраняет исходное значение.
Массивы выводятся без исходных ключей и требуют одинакового gettype для элементов. Пустой массив допустим. Объекты произвольных классов не сериализуются автоматически.
Исключения
Заголовок раздела «Исключения»ZCONF\Exception\ParseException представляет ошибку разбора с контекстом строки и, при чтении файла, пути. SyntaxException используется внутри синтаксического анализа. DumpException сообщает об ошибке формирования документа.
Не выводите полный фрагмент конфигурации из исключения в публичный HTTP-ответ: рядом с ошибкой могут находиться пароли или ключи. Подробный контекст оставляйте в закрытой диагностике с подходящей политикой хранения.