Как вы храните конфиги?

Фанат

oncle terrible
Команда форума
Как вы храните конфиги?

Какие у нас есть варианты?
ини, пхп, сериалайз.
Учитывая желание редактировать файл вручную, сериалайз не очень подходит.
ини формат подошел бы больше, но в пхп нету функции write_ini_file
а var_export - есть.
Получается, что требованиям редактировать как вручную, так и скриптом, отвечает только формат пхп.
Есть только смутное предубеждение против генерации кода скриптом, но осмысленных доводов нет.
Где я ошибаюсь?
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
мне кажется, "write_ini_file" без особых наворотов можно написать минут за 15

системные параметры я храню в полях статического класса _Config, который подключается везде
параметры приложения я храню в базе в таблице с 1 строкой и кеширую в памяти
редактирование через консоль базы меня устраивает
 

zerkms

TDD infected
Команда форума
зависит от характера конфигурационной информации.

часть хранится в php, в виде systemConfig::$db['default']['dsn'] = 'mysql:host=localhost;dbname=mzz';
часть - в базе в виде module - name - value (+ мишура)
 

Фанат

oncle terrible
Команда форума
Мда, я явно буду попроще. Мне чем меньше кода - тем лучше :)
 

Духовность™

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

языки и ошибки, специфичные для каждого контроллера, хранятся примерно так:

/lang/ru/frontend/user/info.php:
PHP:
<?php
return array
(
    'controller_title' => 'Личный кабинет',
    'user_login' => 'Ваш логин',
    'user_password_1' => 'Ваш пароль',
    'user_password_2' => 'Повторите пароль',
    'user_mail' => 'Ваш e-mail адрес',
    'user_first_name' => 'Ваше имя',
    'user_last_name' => 'Ваша фамилия',

    'notification' => array
    (
        'user_edit_ok' => '<b>Данные сохранены.</b>',
    )
)?>
забираю соответственно с помощью include:

PHP:
$cfg = include('/lang/ru/frontend/user/info.php');
xml не подходит в виду того, что вручную очень тяжело ручками писать html в виде мнемоник в xml документе.
 

Духовность™

Продвинутый новичок
vovanium
по желанию :)

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

vovanium

Новичок
triumvirat
конфиг на то и конфиг, что подразумевает изменение каких-то параметров один-два раза
Ну видимо я более ленивый, и настройка тех же ленг-файлов через админку, для меня удобнее, чем вручную править :)
Да и для клиентов удобнее, меньше потом голова болит, что они что-то нахалтурят.
 

С.

Продвинутый новичок
Есть только смутное предубеждение против генерации кода скриптом, но осмысленных доводов нет.
Это действительно только предубеждение. ПXП -- идеальный вариант.
 

Krishna

Продался Java
Стоит еще вспомнить о такой "детской" проблеме, как утечки конфигов при случайном их выкладывании выше документ рута.
Файлы .php от этой проблемы избавлены.
Я тоже юзаю статический класс конфиг. Думаю в пхп5.3 это будет ещё удобнее, когда появятся неймспейсы.
 

флоппик

promotor fidei
Команда форума
Партнер клуба
Стоит еще вспомнить о такой "детской" проблеме, как утечки конфигов при случайном их выкладывании выше документ рута.
Файлы .php от этой проблемы избавлены.
Я большой ребенок. Я люблю ини файлы. Их легко редактировать. Для конфигов, да. Именно конфигов.
"config.cfg.php"
;<?php die; ?>
[database]
dsn = "mysql://user:1@localhost/base"
charset = "utf8"
 

Духовность™

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

флоппик

promotor fidei
Команда форума
Партнер клуба
Я слабо представляю, зачем в КОНФИГАХ символ новой строки, ну да ладно...
 

Духовность™

Продвинутый новичок
А я вообще слабо представляю, зачем для PHP-ПРОГРАММЫ нужен ini-формат. Если посморотреть откуда изначально взялся этот формат, то можно с уверенностью сказать, что в вебе он нафиг не нужен, т.к. любой ini-файл прекрасно заменяет конфиг на PHP или Perl/ASP/etc. Просто изменил значение и все - не нужно писать
и бояться о том, что твой конфиг кто-то прочтет извне.

Ну а преимущество формата языка программирования по сравнению с ini думаю и описывать не имеет смысла. Чего только стоят многомерные ассоциативные массивы и строки без ограничения символов. К тому же, подозреваю, что сделать инклюд конфига быстрее, чем читать файл и парсить его содержимое во внутренне представление. И.. какой уровень вложенности структуры может быть у ini?
В конце-концов читать конфиг на PHP намного привычнее php-программисту, чем читать его в ini-формате.

Поэтому, мне всегда дико смешно, когда я ковыряясь в чужих проектах нахожу ini-файлы с содержимым типа
Код:
user=root
password=blablabal
host=localhost
что мешает авторам выделить все это дело в файл config.php - я не знаю (подозреваю, что понты). И смысл этих загадочных ini в вебе не понимаю.
 

fixxxer

К.О.
Партнер клуба
>что значит не проходит, в чем это выражается?

возвращает null. или true. не помню
 

AmdY

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

-~{}~ 02.06.09 22:52:

кстати, а зачем используют статические классы, если можно константы в классах?
 
Сверху