Intereting Posts
Установите изображение профиля пользователя по умолчанию на изображение их инициалов Не удается заставить http работать в php CodeIgniter: невозможно получить доступ к $ этой функции внутри Продукт :: getProductsProperties (): 'id_image' возвращает 'en_default', а не изображение php imagecopyresampled низкого качества Заполнение поля ввода ввода со значением из mysql База данных SELECT запрос не возвращает результат Laravel 5.3 Создание возвращаемых моделей «Поле не имеет значения по умолчанию» Как повторно сохранить объект как другую строку в Doctrine 2 Как мне разрешить доступ к учетной записи google-сервиса google без учета приложений Google? Php MySql PDO BindParam время от времени работает Строгие стандарты PHP: декларация должна быть совместимой Проблемы с добавлением cURL в поддержку двигателя запроса OAuth Свойство ckeditor для изменения размера изображения найти шаблон для URL-адреса без конечной косой черты

Разбор конфигурационного файла в php для переменных

— Задний план —

Поэтому я работаю над сценарием установщика для локальных машин-разработчиков и его для установки текстового пресса. Я пытаюсь сделать так, чтобы пользователь выбирал конкретный подключаемый модуль из раскрывающегося списка, а затем выбирал какую версию они хотят установить.

– Проблема –

Поэтому мне нужно иметь возможность анализировать файл .cfg и хранить все значения в переменных динамически, поэтому, если мы добавим больше плагинов, он не сломается. Как мне это сделать?

Пара способов, в зависимости от того, как вы хотите сохранить данные конфигурации. Самый быстрый способ – хранить данные как .ini-файл и анализировать его с помощью встроенного в parse_ini_file PHP. Вы также можете хранить данные в других форматах, таких как XML и YAML, но я бы не рекомендовал XML, поскольку вы, вероятно, не будете переносить данные между разрозненными системами, также XML, как правило, сложнее читать со всеми посторонними тегами ( vs yaml или ini).

Я лично предпочитаю yaml и использую синтаксический анализатор Yaml Component для Symfony, который будет анализировать файл yaml в массиве. Компонент Yaml от Symfony можно использовать вне рамок Symfony. Вы могли бы также взглянуть на парсер Zend's Yaml .

После того, как вы выберете формат и парсер, которые хотите использовать, это так же просто, как хранить файл конфигурации где-нибудь, доступный вашему веб-серверу, требующий его, и передачу его через API-парсер. После его анализа вы должны иметь доступ к значениям через массив.

— Обновить —

<?php $settings = parse_ini_file('test.ini'); var_dump($settings); 

Результаты:

 array(41) { ["plugins"]=> string(0) "" ["breadcrumb-navxt"]=> string(5) "4.0.1" ["bp-moderation"]=> string(5) "0.1.4" ["buddypress-activity-stream-hashtags"]=> string(5) "0.4.0" ["buddypress-group-documents"]=> string(5) "0.3.5" ["buddypress-group-email-subscription"]=> string(5) "2.9.1" ["buddypress-links"]=> string(3) "0.5" ["buddypress"]=> string(6) "1.2.10" ["calendar"]=> string(5) "1.3.1" ["collapsing-pages"]=> string(5) "0.6.1" 

Кажется, это работает так, как ожидалось, поэтому, если я хочу, чтобы номер версии плагина calendar я просто сделал:

 var_dump($settings['calendar']); 

Сохранение в динамических переменных:

 $settings = parse_ini_file('test.ini'); foreach ($settings as $key => $setting) { // Notice the double $$, this tells php to create a variable with the same name as key $$key = $setting; } var_dump($calendar); 

Не могли бы вы сохранить файл в формате json или php serialized?