Эта тема на forum.dklab.ru


Gapter: Организация модульной системы
Столкнулся с интересной проблемой. Интересной потому, что думаю как лучше её можно решить, поскольку возможно несколько вариантов.

Предыстория: есть небольшое ядро, которое обрабатывает запросы пользователя, соединяется с модулем, к которому адресуется запрос и принимает от него информацию, которую потом возвращает пользователю. Структура модулей организованна следующим образом: в каждой отдельной папке потенциально может находиться модуль. Для начального распознавания модулей ядро сканирует директории на наличие файла "module.conf", в котором находятся данные о названии, функциях и конфигурации соответствующего модуля. При добавлении нового модуля ядро должно само найти этот модуль и определить его. В самом ядре для этого ничего не прописывается.

Вот в чём у меня проблема: как организовать информацию в файле "module.conf"?

Вариант с определением констант не подходит, т.к. все имена должны быть одинаковыми, чтобы ядро автоматически работало с модулем.

Вариант хранения в переменных или в массиве тоже не радует. При распознавании 10 модулей ядро каждый раз включает найденный файл "module.conf", импортирует из него переменную (-ые) и записывает их в свой массив, после чего уже из него извлекает данные о модулях. Здесь используется include(). Не уверен, что реализация таким образом хороша. Терзают смутные сомнения! (-:

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

лучше сделайте с точностью до наоборот:
создайте папочки и сложите в них файлы index.php, которые будут все необходимые действия производить. общие команды и переменные выделите в отдельный файл, который будете Include'ть куда надо
7.3.:
как организовать информацию в файле "module.conf"?
Чтобы и Вам понятней было и работать программе удобней, советую использовать формат ini-файлов, благо в php есть функция для быстрого парсинга таких файлов.
Юрий Насретдинов:
Gapter:
Я, например, храню информацию о модулях в БД (хотя не уверен, что это хороший вариант), и ничего, работает. Самое главное - чтобы не иклюдилось по 20 файлов в скрипте (у меня например такое в последних проектах, надо бы оптимизатор написать), при «первом старте» ощутимо тормозит. Да и при последующих запусках тоже сказывается.
Gapter:
7.3.:
Очень интересный вариант. Уже попробовал реализовать - пока просто отлично всё! Огромное спасибо за идею! :)

yUAC:
Хранить в базе данных это - да! Но предварительно, общая конфигурация модуля до его установки может храниться только в файле, который закачивается с модулем на сайт.
Кстати, об инклюдах - замерял время - почти нет разницы, что просто читать с файла, что инклюдить... Хотя у меня не очень большие файлы конфигурации.
Юрий Насретдинов:
у меня не очень большие файлы конфигурации
А дело тут не в размере — просто когда на хостинге в секунду запрашивается ОЧЕНЬ большое количество мелких файлов из различных мест, начинаешь подумывать о том, чтобы склеить все эти «мелкие файлы» и поместить их в 1, побольше. Размер файла не имеет особого значения (в разумных пределах, конечно), но вплоть до 200 Кб Вы не должны заметить никаких тормозов вообще

Эта тема на forum.dklab.ru