Bbldlo_Coder
Новичок
И так, я долго кодил "лапшой", потом перешел на функциональное программирование... сейчас пытаюсь понять преимущества ООП подхода при построении WEB-приложений в стиле MVC.
Собственно хотелось понять в том ли направлении я вообще иду и правильно ли понимаю идею ООП и MVC шаблонов проектирования.
И так в "стиле MVC" , для меня означает следующее:
Что есть минимум три "скрипта", №2 получает данные из БД, №3 получив данные, строит страницу (этакий билдер тегов строит страницу заполня их переданными ему данными), а №1 рулит процессом.
Третий исполняет следующее: раcпарсил URL, вызвал скрипт тянущий из БД: "Эй Гарсон мне там вот 10 тем форума, начиная с 55-ой". Далее все что "принес гарсон" направил к (билдеру тегов) с указанием, типа нужной страницы.
Ну как тут прилепить AJAX, я не понимаю,.. ну это не важно на данном этапе. В силу слабого понимая механизма защиты от кроссплатформенных атак, я вообще AJAX пока видал в гробу.
Не понятен механизм, как №1 должен указывать тип страницы для №3 Как? Как Они это должны знать? Какой механизм передачи эти данных? Это так сказать первое, что как мне кажется не понимаю - должно быть есть "магия", которой я не знаю.
Ну понятное дело, что если на примере разобрать будет понятнее. Ставим следующую задачу написать class TaskManager. Суть класса в том, что бы распределять задания по типу и времени исполнения, по исполнителям в зависимости от их очереди и возможностей. Например такой класс может понадобиться при распределение писем в тех поддержку из общей очереди по операторам. Или распределения чего либо, между чем либо в зависимости от параметров этого чего-то и его насыщенностью на текущий момент.
Используется это так:
1) Установил массив значений $arr_skill[user_id][id_skill]=0/1; (умения пользователей)
Понятное дело, что эти данные редко меняются, установил и забыл. Не установил, тоже не беда))
2) Вызвал где-то у себя (в контроллере) метод switch засунул туда два массива (типа первого) только там другие данные: (id_user/query_lenght) и (id_task/id_skill).
Метод получил эти два массива: 1) ID пользователя + длинна очереди, в каких-то еденицах и 2) ID задания + ID типа задания.
А метод вернул массив ID_TASK/ID_USER, выбрав юзера у котрого меньше всего навыков и самая короткая очередь, ну и разумеется этот юзер вообще имеет ID такого навыка. Если вообще установлен массив с навыками юзеров.
Можно сделать например и методы не статичные, чтобы использовать например этот класс для распределения и почты и распределения заказов в одном приложении. Хотя манагер и оператор тех, поддержки точно пользователи с разным ID, так что можно и так оставить.
Сдается мне, что я свои функции группирую в классы, а суть то не меняется. Так что надеюсь добрые люди мне сейчас помогут понять всю "мощь ООП" и как с этой мощью реализовать простейшую систему в духе MVC.
Реализация самих методов мне не нужна, нужна общая концепция реализации веб-приложений на PHP.
П.С.
Понятно все объяснил, как мне кажется.
Хватит тролить))
Собственно хотелось понять в том ли направлении я вообще иду и правильно ли понимаю идею ООП и MVC шаблонов проектирования.
И так в "стиле MVC" , для меня означает следующее:
Что есть минимум три "скрипта", №2 получает данные из БД, №3 получив данные, строит страницу (этакий билдер тегов строит страницу заполня их переданными ему данными), а №1 рулит процессом.
Третий исполняет следующее: раcпарсил URL, вызвал скрипт тянущий из БД: "Эй Гарсон мне там вот 10 тем форума, начиная с 55-ой". Далее все что "принес гарсон" направил к (билдеру тегов) с указанием, типа нужной страницы.
Ну как тут прилепить AJAX, я не понимаю,.. ну это не важно на данном этапе. В силу слабого понимая механизма защиты от кроссплатформенных атак, я вообще AJAX пока видал в гробу.
Не понятен механизм, как №1 должен указывать тип страницы для №3 Как? Как Они это должны знать? Какой механизм передачи эти данных? Это так сказать первое, что как мне кажется не понимаю - должно быть есть "магия", которой я не знаю.
Ну понятное дело, что если на примере разобрать будет понятнее. Ставим следующую задачу написать class TaskManager. Суть класса в том, что бы распределять задания по типу и времени исполнения, по исполнителям в зависимости от их очереди и возможностей. Например такой класс может понадобиться при распределение писем в тех поддержку из общей очереди по операторам. Или распределения чего либо, между чем либо в зависимости от параметров этого чего-то и его насыщенностью на текущий момент.
PHP:
class TaskManager
{
// Массив исполнителей / и их навыков
private static $_arr_users_skil;
// функция установки значений массива выше или добавления, если массив не пустой
public static function set_arr_u($arr_u)
{
}
// функция выбора исполнителя, в зависимости от его навыков и длинны текущей очереди
public static function switcher($arr_task, $arr_users)
{
}
}
1) Установил массив значений $arr_skill[user_id][id_skill]=0/1; (умения пользователей)
Понятное дело, что эти данные редко меняются, установил и забыл. Не установил, тоже не беда))
2) Вызвал где-то у себя (в контроллере) метод switch засунул туда два массива (типа первого) только там другие данные: (id_user/query_lenght) и (id_task/id_skill).
Метод получил эти два массива: 1) ID пользователя + длинна очереди, в каких-то еденицах и 2) ID задания + ID типа задания.
А метод вернул массив ID_TASK/ID_USER, выбрав юзера у котрого меньше всего навыков и самая короткая очередь, ну и разумеется этот юзер вообще имеет ID такого навыка. Если вообще установлен массив с навыками юзеров.
Можно сделать например и методы не статичные, чтобы использовать например этот класс для распределения и почты и распределения заказов в одном приложении. Хотя манагер и оператор тех, поддержки точно пользователи с разным ID, так что можно и так оставить.
Сдается мне, что я свои функции группирую в классы, а суть то не меняется. Так что надеюсь добрые люди мне сейчас помогут понять всю "мощь ООП" и как с этой мощью реализовать простейшую систему в духе MVC.
Реализация самих методов мне не нужна, нужна общая концепция реализации веб-приложений на PHP.
П.С.
Понятно все объяснил, как мне кажется.
Хватит тролить))
Последнее редактирование: