Intereting Posts
Как получить миниатюру из базы данных wordpress на внешнюю страницу ODBC и SQL Server 2008: не можете использовать подготовленные заявления? Преобразование с упрощенного на традиционный китайский Длительный сценарий PHP останавливается при вызове через exec (), но заканчивается при вызове через CLI Как публичные поля «ломают ленивую загрузку» в Доктрине 2? Цифровой знак в PHP с использованием закрытого ключа, проверьте в C # Получение ошибки в рабочей среде, работающая нормально в localhost Перейти к другому случаю в инструкции PHP switch переписать / замаскировать внешнюю ссылку внутри статьи Доступ к массиву, возвращаемому функцией Ошибка при попытке получить данные из 2 таблиц codeigniter Помещение запятой (,) в конец массива. Это соглашение? Как я могу позволить пользователю вводить видеоролик и показывать видео на одной странице при отправке? PHP заменяет все происшествия определенного шаблона строки в тексте в формате HTML Помещение моделей в каталог библиотеки в Zend Framework

Что считается лучшей практикой для обработки переменных, хранящихся в файле конфигурации?

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

  1. $sitename="stackoverflow.com"; а затем задание глобального имени файла $ sitename в функциях
  2. DEFINE(_SITENAME,"stackoverflow.com")
  3. function vars(){return array(sitename=>"stackoverflow");}
  4. ?

Мне бы хотелось получить техническое объяснение, почему я должен выбирать один, а не другой.

Спасибо!

Solutions Collecting From Web of "Что считается лучшей практикой для обработки переменных, хранящихся в файле конфигурации?"

Я обычно использую define () для «экологической» конфигурации, поскольку привязка константы должна быть быстрее, чем вызов новой функции. Это также концептуально соответствует тому, что я делаю:

 /** * Set the application mode. Valid options are "development" and "production" */ define('APP_MODE', 'development'); // Database Host define('DB_HOST', 'localhost'); 

Другим вариантом является использование ini-файлов (убедитесь, что они не находятся в корневом каталоге веб-сайта) и функция parse_ini_file() , хотя вы должны запускать только один раз и использовать singleton для доступа к переменным после этого. (Действительно, вы должны лениво загрузить его, только разбор файла при первом запросе.)

Как правило, считается «лучшей» практикой поддерживать директивы конфигурации на уровне приложений в отдельном файле конфигурации или XML-файле. Вы можете создать класс, который загружается как одноэкземплярный экземпляр, который анализирует файл и дает вам то, что вы хотите, например:

 $config->get('DB_HOSTNAME'); 

Посмотрите на Zend_Config .

Вы можете легко импортировать данные конфигурации как ini-файл, используя функции parse_ini_file или parse_ini_string . Ваша конфигурация будет храниться в том же формате, что и php.ini.

Мне нравится использовать define, так как это помешает вам случайно изменить константы позже. Это также облегчает рассказывать в вашем коде, что вы используете константу.

Другие упомянули использование файла конфигурации – это хорошая идея, но основной причиной этого на большинстве языков является то, что вы можете изменить файл конфигурации, не перестраивая / развертывая приложение. Поскольку PHP не является компилируемым языком, я не вижу большой реальной пользы для использования ini или файлов конфигурации XML в PHP.

Мне нравится использовать глобальный одноэлементный объект, в соответствии с тем, что предлагает karim79, и реализовать реализацию singleton-класса, прочитав конфигурацию из набора .ini-файлов, используя parse_ini_file. Также хорошо иметь отдельные файлы .ini для каждой серверной среды, например

production.ini testlab.ini demoserver.ini

Затем вы можете автоматически выбрать правильную конфигурацию для загрузки на основе текущего имени хоста. Вся логика для обработки этого должна быть помещена в одноэлементную реализацию.