- Разместил
Redfox
- Дата: 07.03.2009 в 18:56
Как-то в ходе работы мне пришлось писать CMS (и не одну, хотя с каждым апгрейдом они получались все лучше:)). Одними из многих требований были :
- Модульность, с легкой возможностью подключения и отключения модулей.
- Возможность дописывания модулей другими программистами, без доступа к ядру CMS (что подразумевало написания хорошего мануала).
Первый пункт особой сложности для меня не представлял, решался он разработки архитектуры файлов модулей и разработкой алгоритма подключения/отключения/настройки модулей, а вот со вторым пришлось подумать…
Решений я видел несколько:
- Вставлять в ключевых местах CMS циклы с подключениями файлов модулей. Например, если существует файл в папке модуля с именем include_page.php то подключать его перед выводом страницы тем самым, создав этот файл, можно получить доступ к редактированию данных страницы. Но мне это решение не понравилось. Очень много файлов, да и не удобно, сложно управлять порядком подключения дополнительных файлов, плюс некоторые файлы могут конфликтовать, т.к. нет ни какой иерархии и архитектуры. В общем как идея она имеет место, но я ее не принял.
- “Якорная вставка функций” - это не научное название, просто я это так назвал:). И именно этот вариант я и выбрал. Сейчас расскажу как оно работает.
Смысл “якорной вставки функции”, как и в первом варианте, заключается в раставление в основных местах “функций якорей”, но в этом случае ни какие файлы не подключаются, а всего лишь запускаются функции, которые были добавлены в глобальный массив. Плюсы этого метода для меня были в том, что доступа как такового ко всем переменным нет. То есть - можно объявить в функции нужную переменную как глобальную, но это если ты знаешь ее, если нет, то и не нужно ее трогать. Таким образом, ни каких конфликтов не будет все используемые переменные внутри функции. Читать запись полностью »