Вот есть куча настроек: выводить что-то по возрастанию использовать чпу/не использовать требовать подтверждение по мылу новых пользователей/не требовать время жизни кеша Как это все хранить, что б можно было изменять через админку? Можно в базе, можно в файлах. Как лучше?
Хранить в файлах личны мне больше нравится. 1. какой выбор: ini, xml, yaml. 2. всё-равно конфиг из БД рано или поздно будет кэшироваться. Так не один ли фиг? 3. файлы проще редактировать напрямую. Порой полезная штука.
вернемся к теме. Как настройки устанавливать? Напр. есть класс User. Его настройки хранятся в config/auth.php PHP: <?php // содержимое файла: // ----------------------------------------------------------- // authTime и prolongAuth не обрабатываются, если используются сессии return array( 'cookieNames' => array( 'id' => 'id', 'hash' => 'hash' ), // хранить id и hash в сессиях или в куках 'useSesions' => false, // время, на которое запоминаем пользователя 'authTime' => 60 * 60 * 24 * 10, // продлевать или нет аутентификацию при каждом заходе 'prolongAuth' => true, // привязывать пользователя к ip или user-agent // yes/no/byUser 'bind' => array( 'ip' => 'byUser', 'userAgent' => 'byUser' ) ); // ----------------------------------------------------------- /* Вариант 1: мы принудительно "скармливаем" классу настройки: */ User::inctance(include 'contig/auth.php'); /* Вариант 2: класс в своем конструкторе сам их забирает:*/ protected function __construct() { $this->db = Database::getInstance(); $this->users = Users::instance(); $this->settings = Settings::get('user'); } // но до этого мы должны в начале скрипта задать пути к настройкам Settings::setPathes('user', 'config/auth.php'); Вариант 2 мне больше приглянулся. НО: например, мы одновременно можем подключаться к 2 разным базам: одна основная, вторая для сессий. И тут уж как ни крути, но мы должны "запихнуть" в instance настройки как быть?
Как быть с чем? Какая разница твоему User где у тебя хранятся сессии? Ему на это абсолютно фиолетово.
ты не понял меня. Я имел в виду такое: PHP: <?php // пути настроек. Эти файлы мы из админки можем редактировать $pathes = array( 'database' => array( 'default' => 'config/db.php', 'sessions' => 'config/db-sessions.php' ), 'user' => 'config/auth.php' ); Settings::setPathes($pathes); // может быть несколько экземпляров этого класса class Database { public static function setInstance($type = 'default') { $settings = Settings::get('database', $type); } } class Session { private $db; function __construct() { // вот сессии. У них своя база. Может быть даже на другом сервере $this->db = Database::setInstance('sessios'); } } // а это мы создаем экземпляр основной базы. Настройки default $db = Database::setInstance(); new Session; вопрос исчерпан. Класс Settings в принципе дальше можно переписать так, что б он хавал и ini, xml. Была б необходимость.