Константы или массив для хранения основных параметров CMS?

mxgl

Guest
Константы или массив для хранения основных параметров CMS?

Речь идет о CMS.
Допустим, есть функция инициализации, которая загружает и устанавливает параметры, используемые CMS в своей работе.
Как лучше хранить параметры проекта (как то: различные пути, системные настройки CMS, параметры подключения к БД и т. п.):
1. в константах
или
2. в каком-нибудь массиве (что-то типа $GLOBALS[SYSTEM]? Что лучше, удобнее, безопаснее? Как вы реализовали это в своей CMS?
 

Стас

Троечник
mxgl
IMHO, проще всего держать основные настройки в конфиг-файле.
 

mxgl

Guest
Это-то однозначно.

Но вот, например, в том же vBulletin, переменная $tableprefix устанавливается в конфигурационном файле (config.php), а потом, в файле init.php все переменные конф. файла переопределяются в константы (define("TABLE_PREFIX",$tableprefix) и далее ужо используется TABLE_PREFIX. Я вот про что. Что удобнее, лучше, безопаснее в этом смысле - константы или массив?
 

Стас

Троечник
mxgl
C чем привык работать, то и удобнее, лучше, безопаснее :)
Честно говоря, проблемы я пока не вижу.
 

swamp_demon

Новичок
лично я храню в конфиге через DEFINE

но если тебе где нибудь надо будет поменять на ходу значение то ничего не получится и тогда придется юзать $GLOBALS
 

serga

Guest
А как например такой вариант, хранить переменные в базе, например в таблице, settings?
 

fixxxer

К.О.
Партнер клуба
>А как например такой вариант, хранить переменные в базе, например в таблице, settings?

в т.ч. логин, пароль и имя базы? :)
 

mxgl

Guest
у мну щас так:

в файле _vars.conf - только параметры для подключения к БД. Cоответственно в .htaccess:
<Files ~ "^\_">
Order allow,deny
Deny from all
</Files>
В таблице БД — параметры проекта, типа: название проекта, дефолтный язык и т. д.
Функция инициализации собирает все параметры из БД и сохраняет их в соответствующие константы, попутно при инициализации модуля создавая "словарь" для используемого языка и загоняя его в массив. Все необходимые пути загоняются тож в константы — типа define("DOCUMENT_ROOT",$_SERVER["DOCUMENT_ROOT"])...
Вот и думаю - в правильном ли направлении ли я мыслю?
 

Кром

Новичок
mxgl
Тебе нужно просто понять, что такое константы. Это значения, которые не переопределяются во время работы скрипта. Соответственно, если у тебя такие значения есть, можешь смело объявлять их константами.
 

Kelkos

Сам себе программер
ИМХО. основные настройки лучше в константах держать.. не надо в какой нить глухой функе маеться с глобализацией (это один из плюсов).. Да и безопаснее, как мне кажется.
 

[Gisma]

Новичок
Взе зависит от самих данных. И выбор определять надо по ситуации
Допустим у нашей ЦМС все данные представляются через интерфейсы, которые либо xml-ки либо хэши, но замечу что основные константы (SYS_ROOT,HTTP_ROOT )объявлены через define
 

kruglov

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

-~{}~ 29.04.05 17:31:

а если этот файлик еще и зенд-заенкодить...
 

fixxxer

К.О.
Партнер клуба
Есть мысль прописывать логин и пароль к базе в httpd.conf, что некоторые хостеры и делают.

А еще есть мысль, что grep -R 'mysql_connect' *php - это совсем не геморройно :)
 
Сверху