Прежде всего, я предполагаю, что это НЕ плохая практика из-за различного популярного программного обеспечения с использованием этого метода, такого как SMF.
Во всяком случае, поэтому у меня есть этот код:
<?php // main visual config $cfg['lang'] = 'en'; // paths $path['admin'] = 'index.php?p=admin'; $path['admin2'] = 'zvfpcms/admin'; $path['root'] = 'zvfpcms'; $path['images'] = 'zvfpcms/img'; $path['css'] = 'zvfpcms/css'; $path['js'] = 'zvfpcms/js'; $path['pages'] = 'zvfpcms/pg'; ?>
Дело в том, что я хочу, чтобы переменные $ cfg редактировались напрямую через интерфейс.
Как это будет достигнуто? Я не думаю, что замена строк была бы хорошей идеей, особенно когда существует огромное количество возможностей (или даже бесконечных) для будущих переменных $ cfg, которые я создаю.
Или, я должен согласиться на другой метод …
Ответы оценены!
Ну, я только что нашел ответ Unkwntech здесь … Я сохраню его здесь для справки.
Pear Config позволит вам легко читать и записывать конфигурацию в / из разных источников, включая файл / массив PHP. Вам, вероятно, придется переместить $cfg
в свой собственный файл, хотя и включить его, чтобы другие переменные и т. Д. Не были затронуты.
Вы также можете сделать это самостоятельно, используя var_export()
а затем записывая файл, снова вам, вероятно, потребуется переместить переменную в свой собственный файл. Я думаю, что это создало бы более беспорядочный / менее читаемый PHP, чем класс Pear.
Просто установите все настройки в своей базе данных, а когда измените настройки, перестройте файл конфигурации.
Не используйте PHP-код для PHP. Вместо этого используйте файл конфигурации XML. Прочтите информацию об XML, если вы хотите внести изменения, измените значение в структуре данных, сгенерированной из файла XML, и верните его обратно в новый файл конфигурации.
Или сохраните настройки в базе данных, или вы можете использовать стандартный ini-файл (пары ключ = значение);
lang=en timezone=CET
Читай их:
function loadSettings() { $cfg = array(); foreach (file('settings.ini') as $line) { list ($key, $value) = explode('=', $line); $cfg[$key] = $value; } return $cfg; }
Файловые ввода-вывода менее эффективны, чем стандартные вызовы базы данных, особенно если у вас уже есть открытое соединение с базой данных.
Причина, по которой я верю, что эта плохая практика заключается в том, что перед редактированием у вас может быть работающая система, есть некоторая ошибка в редактировании (возможно, вы не избежали символа с одной кавычкой), и после редактирования все приложение становится недоступным, PHP не может разобрать конфигурационный файл, который затрагивает почти все, что вы делаете.
Предложение XML не является плохим, поскольку вы можете обрабатывать любые ошибки, возникающие во время чтения XML.
Если у вас есть база данных (читая этот пост, похоже, что вы не используете его, что хорошо), это было бы лучшим местом для данных – для чего это важно. В мире с плоскими файлами чтение в не-PHP-файле и его интерпретация намного лучше, чем автоматическое редактирование файлов PHP самостоятельно.