Перейти к содержимому
docs.
WORKSPACE

Документации проектов

Открыть каталог проектов
Localzet ServerАсинхронный PHP-серверTriangleФреймворк и компонентыMIX IDИдентификация и интеграцииHack APIПубличные API хакатонаACNПроект и компонентыUserlay / UserNetПроект и компонентыAxiomПроект и компонентыМесседжинг через почтуПроект и компонентыLWT / JWT / JOSEПроект и компонентыФинансовая аналитика KimaiПроект и компонентыМультипарадигмальная БДПроект и компонентыZorin PlatformПроект и компоненты✓Zorin TrustПроект и компонентыFloraScope / VegwatchПроект и компонентыaegis-qДокументация проектаaevumdbДокументация проектаauditДокументация проектаauto-invest-managerАвтотрейдерcaine-companionДокументация проектаcertbot-cloudflareДокументация проектаClusterLocalzet Server / ClustercmdveilДокументация проектаConsolePHP CLICronБиблиотеки Localzet Serverdata-connectorДокументация проектаdevice-controlDevice Controlenn-projectДокументация проектаEventsБиблиотеки Localzet ServerflowsintДокументация проектаforgeДокументация проектаHttpClientБиблиотеки Localzet ServerinterpreterСобственный языкinvariaДокументация проектаkeynotesДокументация проектаknotrouteKnotroutelaravel-personal-analyticsДокументация проектаlocalzet-osДокументация проектаmeridianДокументация проектаMQTTБиблиотеки Localzet Servernano-kernelСобственная ОСNoterДокументация проектаpersonal-analyticsДокументация проектаProxyБиблиотеки Localzet ServerPSRБиблиотеки Localzet ServerPSR-7Библиотеки Localzet Serverrschs-monitorДокументация проектаsemsealДокументация проектаshardsealДокументация проектаSocketIOБиблиотеки Localzet ServerSOCKS5Библиотеки Localzet Serverstandalone-analyticsДокументация проектаstatic-php-cliДокументация проектаStorageБиблиотеки Localzet ServersutureДокументация проектаtempoweaveДокументация проектаttsСинтез речиTunnelБиблиотеки Localzet Serverui-kitUI KitvesperДокументация проектаWebAnalyzerWebAnalyzerzorin-access-brokerДокументация проектаzorin-authority-brokerДокументация проектаzorin-authority-sdk-phpДокументация проектаzorin-authority-sdk-pythonДокументация проектаzorin-authority-sdk-tsДокументация проектаzorin-client-intelДокументация проектаzorin-device-core-aospДокументация проектаzorin-host-agentДокументация проектаzorin-native-labДокументация проектаzorin-nodeДокументация проектаzorin-opsДокументация проектаdonstu-python-sdkДокументация проектаfloortraceFloortraceserver-rsLocalzet Server / Cluster
Каталог

ZCONF

ZCONF читает текстовые конфигурации в PHP-массивы и собирает их обратно из значений и таблиц. Формат использует присваивания, секции [table], массивы и комментарии #. Это отдельный парсер: похожий синтаксис не означает полной совместимости с TOML.

Окно терминала
composer require localzet/zconf

Пакету нужны PHP 7.1 или новее и расширение JSON. Классы находятся в пространстве имён ZCONF.

use ZCONF\Parser;
$config = Parser::parseString(<<<'CONF'
[server]
name = "Example"
port = 8080
enabled = true
CONF
);
$port = $config['server']['port'];

Для файла используйте Parser::parseFile('/etc/example/service.zconf'). Метод проверяет существование и доступность файла, читает его целиком и добавляет сведения о файле к ошибке разбора. Веб-приложение должно выбирать путь само, а не принимать произвольный путь из запроса пользователя.

Пустой документ возвращает null. Второй аргумент true превращает верхний уровень в stdClass; вложенные таблицы остаются массивами. Для единообразного доступа обычно удобнее оставить стандартный результат-массив.

Парсер нормализует переводы строк и проверяет UTF-8. Значения после разбора всё равно нуждаются в прикладной валидации: наличие server.port ещё не означает, что значение допустимо для сетевого порта.

name = "Example"
enabled = true
ports = [8080, 8081]
[database]
host = "127.0.0.1"
[[workers]]
name = "jobs"
[[workers]]
name = "mail"

Обычная таблица группирует именованные значения. Повторяемая секция [[workers]] добавляет элементы массива таблиц. Парсер также распознаёт вложенные пути таблиц, inline-таблицы, null, числовые значения, даты и несколько форм строк. При переносе конфигурации из другого формата сначала проверьте требуемые конструкции на ZCONF; расширение файла само по себе не определяет совместимость.

use ZCONF\Builder;
$text = (new Builder())
->addComment('Service configuration')
->addTable('server')
->addValue('port', 8080)
->addValue('enabled', true)
->getString();

Builder возвращает строку и не записывает файл. Запись, права доступа, резервная копия и атомарная замена файла остаются задачей приложения.

addTable('database.pool') выбирает вложенную таблицу; addArrayOfTable('workers') создаёт следующий элемент массива таблиц. Конфликтующие определения и повторные ключи отклоняются.

Массивы значений должны быть однородными по PHP-типу. Builder выводит значения массива последовательно; его ассоциативные ключи не сохраняются. Для именованных полей используйте таблицы.

Ошибки чтения и синтаксиса передаются через исключения ParseException/SyntaxException; невозможность представить значение — через DumpException. Не подменяйте ошибочный конфигурационный файл пустыми настройками: это скрывает проблему и может включить нежелательные значения по умолчанию.

После разбора проверьте обязательные секции, типы, диапазоны, допустимые адреса и комбинации параметров. ZCONF отвечает за формат документа, а не за контракт конкретного сервиса.

Исходный код · MIT