В своей CMS решил сделать так, чтобы модули легко настраивались путём легкой смены конфига конкретного модуля. Решил данные конфига хранить в серилизованном виде (выбирал м/у XML, json и сериализацией). Накатал маленький класс для работы с конфигом. PHP: <?php class config { /* Пример работы $cnf = new config('config.cnf'); // Загрузка конфигурации из файла $cnf->addValue('param1',3,''); // Добавление параметра $cnf->setValue('param1',123,'комментарий'); // Изменение параметра $cnf->getValue('param1'); // Получение параметра $cnf->delValue('param1'); // Удаление параметра $cnf->saveConfig('config.cnf'); // Сохранение конфигурации в файл */ public $values = array(); // Массив конфигурации // Конструктор класса public function __construct($val = '') { if (is_array($val)) { $this->values = $val; } elseif (is_file($val)) { $this->values = unserialize(file_get_contents($val)); } } // Сохранение конфига в файл public function saveConfig($file) { if (!file_exists($file) || is_writeable($file)) { @file_put_contents($file, serialize($this->values)); } else return false; } // Добавление нового параметра public function addValue($name, $value = '', $comment = '') { if (isset($name) && !empty($name)) $this->values[] = array('name' => $name, 'value' => $value, 'comment' => $comment); } // Удаление параметра по имени public function delValue($name) { foreach ($this->values as $k=>$v) { if ($this->values[$k]['name'] == $name) unset($this->values[$k]); } } // Достаём значение параметра по имени public function getValue($name) { foreach ($this->values as $arr) { if ($arr['name'] == $name) return $arr['value']; } } // Устанавливаем значение параметра по имени public function setValue($name, $value, $comment='') { foreach ($this->values as $k=>$v) { if ($this->values[$k]['name'] == $name) { $this->values[$k]['value'] = $value; $this->values[$k]['comment'] = $comment; } } } } в index.php перед инклюдингом модуля загружается его конфиг, затем в модуле соответственно юзаются параметры. Собственно вопрос - нормальный подход или пойти убиться ап стену? Второй вопрос - пнитев направлении правильного оформления кода.
лучше сделать индексы в массивы через 'name'. не надо будет постоянно искать по всему массиву это имя. комменты стандартней делать как пхпдок, в описании функции использовать или глаголы, или существительные (что-то одно): Удаление - Достаём. как сделаешь, покажи пример модуля с конфигом. интересно посмотреть лёгкость с отсутствием костылей (да-да, каждое значение из конфига надо 100500 раз проверить на корректность).