Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Каркас для разработки приложений. Ваше мнение

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
shum0531
Отправлено: 29 Июня, 2014 - 17:42:55
Post Id



Гость


Покинул форум
Сообщений всего: 92
Дата рег-ции: Янв. 2013  


Помог: 0 раз(а)




Доброго времени суток! Этой темой, скорее всего опросом, я хочу узнать, сколько программистов будут солидарны с моей идеей или же нет. И по чему.

В течении довольно долгого времени я писал каркас для создания веб приложений. с постоянным переписыванием (менялась основная логика), опираясь на весь портфель, ранее созданных приложений.

В итоге каркас получился менее 100 строк кода (Радость подсчитал и сам улыбнулся ) + 1 таблица как часть системы(каркаса)
CODE (SQL):
скопировать код в буфер обмена
  1. CREATE TABLE IF NOT EXISTS `page_sity` (
  2.   `id` int(11) NOT NULL AUTO_INCREMENT,
  3.   `name_url` varchar(255) NOT NULL,
  4.   `linck_name` varchar(255) NOT NULL,
  5.   `parent_id` int(11) NOT NULL DEFAULT '0',
  6.   `level` int(11) NOT NULL DEFAULT '1',
  7.   `sort` int(11) NOT NULL DEFAULT '0',
  8.   `id_module` varchar(255) DEFAULT NULL,
  9.   `id_table` int(11) NOT NULL,
  10.   `table_name` varchar(255) NOT NULL
  11.   PRIMARY KEY (`id`)
  12. ) ENGINE=MyISAM  DEFAULT CHARSET=utf8;

Логика заключается в следующем
Берем массив из URL (Моменты касаемо безопасности это я опущу, тут они не к чему), то есть адрес /news/hlebnye-kroshki равен array ( 0 => 'news', 1 => 'hlebnye-kroshki', ), далее из массива генерируем sql запрос
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT l2.* FROM page_sity AS l2
  2. LEFT JOIN page_sity AS l1 ON l1.id = l2.parent_id AND l1.name_url = 'news'
  3. 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. Как то компактно получилось))). Если что то не понятно спрашиваете. И главное, Ваше мнение если поняли логику.
 
 Top
caballero
Отправлено: 29 Июня, 2014 - 21:42:05
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




Цитата:
В итоге каркас получился менее 100 строк кода

угу, и пользы получилось столько же


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
DelphinPRO
Отправлено: 30 Июня, 2014 - 08:38:06
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




где каркас-то? Улыбка что оценивать?


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Zuldek
Отправлено: 30 Июня, 2014 - 09:30:00
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




shum0531 пишет:
И главное, Ваше мнение если поняли логику.

Мнение такое, что вы заного открыли паттерн, уже лет 6 используемый всеми популярными фреймворками.
 
 Top
shum0531
Отправлено: 30 Июня, 2014 - 09:56:41
Post Id



Гость


Покинул форум
Сообщений всего: 92
Дата рег-ции: Янв. 2013  


Помог: 0 раз(а)




Народ, Вы больны патернами и фреймфорками. Я не говорю что это плохо, их надо знать, но и ленится то же не стоит. Ведь php, насколько я знаю один из простейших языков программирования и фреймворки, в большинстве проектов просто, просто в них не нуждаются.
Zuldek пишет:
о вы заного открыли паттерн, уже лет 6 используемый всеми популярны

Подскажите плиз название патерна данной реализации!

И ни кого не смутило, что в данной логике все завязано на одной таблице? То бишь, говорить языком фреймворков, таблица является маршрутизатором(хранит в себе ВСЕ url адреса приложения) и контроллером.
Здесь если программисты, которые делают проекты на фреймворках, только когда это реально необходимо?
 
 Top
Contr
Отправлено: 30 Июня, 2014 - 10:03:03
Post Id



Частый гость


Покинул форум
Сообщений всего: 202
Дата рег-ции: Окт. 2011  
Откуда: с Марса


Помог: 1 раз(а)




Так и знал, что эта тема - жирный троллинг
 
 Top
Ch_chov
Отправлено: 30 Июня, 2014 - 10:30:56
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


Помог: 90 раз(а)




shum0531, кроме фреймворков есть еще микрофреймворки.
 
 Top
LIME
Отправлено: 30 Июня, 2014 - 10:44:09
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




я что-то подобное встретил на первой работе в b[ самописной cms
и потому знаю что спросить))
что делать если нужен url не из 2ух составляющих а из 1 или 3-4-5 ? и с каждым из них должны быть гет-параметры?
а если гет-параметр нужен не в конце урл а в середине?
типа /goods/moloko/in-cart
/goods/telefon/in-cart
были такие заморочки от SEOшников
(Добавление)
выход:
типа matherialized path
храни шаблон urla в таблице
как бы тебе твое решение ни казалось красивым это не так))
 
 Top
shum0531
Отправлено: 30 Июня, 2014 - 11:03:31
Post Id



Гость


Покинул форум
Сообщений всего: 92
Дата рег-ции: Янв. 2013  


Помог: 0 раз(а)




LIME пишет:
я что-то подобное встретил на первой работе в b[ самописной cms
и потому знаю что спросить))
что делать если нужен url не из 2ух составляющих а из 1 или 3-4-5 ? и с каждым из них должны быть гет-параметры?
а если гет-параметр нужен не в конце урл а в середине?
типа /goods/moloko/in-cart
/goods/telefon/in-cart
были такие заморочки от SEOшников
(Добавление)
выход:
типа matherialized path
храни шаблон urla в таблице
как бы тебе твое решение ни казалось красивым это не так))


Не совсем понятна цель изъятия данных из начала адресной строки или середины.
Вот генерация sql запроса, на существование и целостности url и возвращении результата
PHP:
скопировать код в буфер обмена
  1. function page_sity_sql($url_array)
  2. {
  3.         $shv_url_count = count($url_array);
  4.         $select = "SELECT l{$shv_url_count}.* FROM page_sity AS l{$shv_url_count} \r\n";
  5.         for($left_join = '', $i = 1; $i < count($url_array); $i++)
  6.         {
  7.                 $left_join = "LEFT JOIN page_sity AS l".$i." \r\n".
  8.                 "ON l".$i.".id = l".($i+1).".parent_id \r\n".
  9.                 "AND l".$i.".name_url = '".$url_array[$i-1]."' \r\n".$left_join;
  10.         }
  11.         return $select.$left_join."WHERE l".$shv_url_count.".name_url = '".$url_array[$shv_url_count-1]."' \r\n".
  12.         "AND l1.parent_id = '0';";
  13. }

Если я Вас правильно понял, нужна возможность получения всей цепочки, а не только последнего сегмента?
Тогда все просто, строку SELECT l{$shv_url_count}.* генерируем не в начале функции, а в цикле, как и выборка. Тем самым, мы получает либо все данные либо ни чего, если нарушена логика.
 
 Top
Zuldek
Отправлено: 30 Июня, 2014 - 11:25:24
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




вата Улыбка
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« CMS и фреймворки »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB