Доброго времени суток! Этой темой, скорее всего опросом, я хочу узнать, сколько программистов будут солидарны с моей идеей или же нет. И по чему.
В течении довольно долгого времени я писал каркас для создания веб приложений. с постоянным переписыванием (менялась основная логика), опираясь на весь портфель, ранее созданных приложений.
В итоге каркас получился менее 100 строк кода (
подсчитал и сам улыбнулся ) + 1 таблица как часть системы(каркаса)
CODE (
SQL):
скопировать код в буфер обмена
CREATE TABLE IF NOT EXISTS `page_sity` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name_url` varchar(255) NOT NULL,
`linck_name` varchar(255) NOT NULL,
`parent_id` int(11) NOT NULL DEFAULT '0',
`level` int(11) NOT NULL DEFAULT '1',
`sort` int(11) NOT NULL DEFAULT '0',
`id_module` varchar(255) DEFAULT NULL,
`id_table` int(11) NOT NULL,
`table_name` varchar(255) NOT NULL
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Логика заключается в следующем
Берем массив из URL (Моменты касаемо безопасности это я опущу, тут они не к чему), то есть адрес /news/hlebnye-kroshki равен array ( 0 => 'news', 1 => 'hlebnye-kroshki', ), далее из массива генерируем sql запрос
CODE (
SQL):
скопировать код в буфер обмена
SELECT l2.* FROM page_sity AS l2
LEFT JOIN page_sity AS l1 ON l1.id = l2.parent_id AND l1.name_url = 'news'
WHERE l2.name_url = 'hlebnye-kroshki' AND l1.parent_id = '0';
Для тех кто не понял: этот запрос вернет из таблицы строку где name_url = 'hlebnye-kroshki'. При этом если соблюдена иерархия news>hlebnye-kroshki
Вот и закончилась основа каркаса ))))))
Что мы получили из таблицы?
id - понятно
name_url - сегмент адресной строки относящийся к текущей странице
linck_name - название страницы или title
parent_id и level - idродительской страницы и уровень вложенности
id_module - список модулей установленных на данную страницу (верхние, нижние, основное.. меню, новости, статьи галереи, каталоги, карточки товаров.......)
id_table и table_name - id и имя таблицы где брать данные (новости, статьи галереи.......) А так же имя таблицы соответствует имени подключаемого html шаблона
примерные затраты шаред-хостера для такой системы 352.30 Кб / 0.0049 сек / 9 запросов. система отработала: 3 разных расположения меню, меню каталога товаров, 2 html блока (реклама), хлебные крошки, контент новости, комментарии к новости.
Из ООП в системе один объект синглтон для базы данных. Все остальные вспомогательные классы со статическими методами, сама система (каркас) написан в процедурном стиле.
P.S. Как то компактно получилось))). Если что то не понятно спрашиваете. И главное, Ваше мнение если поняли логику.