Такая вопрос, допустим делаю блог с использованием MVC, хочется все сделать по уму, есть следующие папки: bootstrap - тут у меня основные файлы, которые всегда надо загружать, константные переменные, автолоадер и т.п. classes - базовые классы model, view, controller, а так же прочие вспомогательные классы (для работы с БД, обработчик ошибок, для теста и т.д.) и собственно папки models, views, controllers, пока что все. Надо реализовать капчу, только куда, в каком виде, раньше, те капчи что я видел, представляли из себя 2 файла, первый - класс обслуживания (создание формы, проверка введенной капчи), второй - файл .php картинка капчи, так вот вопрос, вы бы как реализовывали капчу, как model, view, controller? ну я себе представлял все что реализовывается в виде MVC это что то таке крупное, вывод статей из БД, регистрация, авторизация, а капча это что то такое мелкое, вроде как не заслуживает реализации в виде MVC или же класс засунуть в classes, а с картинкой как быть? Ну и вообще в целом, как быть с такими вещами типа капчи, которые вроде как не заслуживают реализации в виде MVC, но при этом занимают больше одного файла (на ум пока пришла только капча, по-этому про нее и спрашиваю).
А вы хотите сами рисовать капчу? Или использовать чью-то готовую, типа гугла? Если сами, то напрашивается модель (готовит данные, проверяет правильность), контроллер (отрабатывает запрос картинки, передаёт данные во вьюху). И вьюха - занимается рисованием. Без последний, с учётом специфики работы с изображением php можно обойтись (немного сложно представить взаимодействие)
Посмотри как всё реализовано в symfony2 или Yii2. MVC это только один из паттернов, их много и используют их несколько одновременно.
Если че, за пример беру ныне почивший фреимворк codeigniter http://code-igniter.ru/user_guide/helpers/security_helper.html Всякая дребедень что не влизает в понятие mvc пишется как хелпер. Можешь обозвать либой или пакетом собственно суть не меняется.
Я хочу что бы у меня все было систематизировано, принцип будет такой, будет идти базовый вариант капчи (или еще чего то), в ней капча будет сама рисоваться, т.е. все будет самодостаточным, так же возможно будет поставить дополнения (модули), т.е. можно будет написать свою капчу, дать этому классу такое же название как у капчи по умолчанию и в итоге за место, капчи по умолчанию будет грузится та что модуль. вопрос собственно как это реализовывать грамотнее. я пошарил в Yii2 и что то не нашел где эта капча лежит, да бы посмотреть как там она устроена.
А стоит ли? Если хочешь контроль может просто интерфейс создашь и наследуй от какого то базового класса? Как то расширять капчу, как то... твое дело. yii когда то бегло просматривал и из коробки этого вроде не было, зато куча экстеншинов http://www.yiiframework.com/extensions/?tag=captcha
погодь Не совсем понимаю, т.е. в базовой версии не будет капчи, а будет только интерфейс капчи? а что бы использовать капчу мне надо будет ставить капчу в виде модуля(плагина)?
Определитесь товарищ Я не писал что не будет, я говорю то что ты написал. Есть базовая капча. Она использует интерфейс и какой то базовый класс. Да, если хочешь контроль то создаешь интерфейс и говоришь что все капчи должны использовать этот интерфейс и базовый класс хз но туда можно что то пихнуть. Все зависит от реализации. Если это не вписывается в твое представление о прекрасном, то не надо. Вообще я не представляю кто будет расширять твою капчу. Будет капча из коробки или ставится как плагин тебе решать. Эксперементируй потом покажи что получилось З.Ы. Интерфейсы используются для того что бы у всех классов их использующих был общий интерфейс - методы имели общие название и т.д. Базовый класс для какой то базовой инициализации вынесение обшего кода в 1 место. Использовать их или нет тебе решать. Если они будут в поставке т.е. в ядре движка не вижу ничего плохого. Если прям мега супер хочешь вперед на изучение движком фреимворков. Добавлено спустя 19 минут 43 секунды: P.S. Нравился мне codeigneter за легкость https://ellislab.com/codeigniter/user-guide/helpers/captcha_helper.html https://ellislab.com/codeigniter/user-guide/general/helpers.html Добавлено спустя 21 секунду: В современных движках без поллитра сложно(((
наверное как раз с этим беда. Добавлено спустя 11 минут: Вот смотрите, есть базовый вариант блога, а вообще это CMS, в ней базовый вариант капчи (класс называется допустим MyCaptcha с методами getForm и checkCode, думаю объяснять что есть что не надо), так же в этом базовом варианте есть регистрация, авторизация, где будет использоваться эта капча, т.е. будет класс MyCaptcha и методы getForm и checkCode. Капча базовая будет чмошная, допустим на белом фоне, черными буквами без всяких искажений будет код, вот и все. Мне надо так, я делаю модуль, модуль - капча, я его называю так же как и базовую капчу - MyCaptcha, в ней присутствуют те же методы - getForm и checkCode и в итоге у меня в базовой регистрации будет загружаться не базовая капча, а та, что модуль, нормальная, с цветным фоном, с искажениями и т.д. как то так я это вижу.
Объединять не связанные сущности точно не надо. Добавлено спустя 1 минуту 2 секунды: Капча это капча. Она отвечает за капчу. А где будет усппользоваться это должно быть на выбор разработчика, чем гибче тем лучше. Добавлено спустя 3 минуты 5 секунд: В внутренностях соверменных фреимворках я не копался так как вообще слазить с пхп намерен, но как легкий для понимания пример я тебе привел. Может не идеал но просто удобно. Собственно как я сечас вижу там сделано так как ты хочешь. Посмотри понравится используй.
нескромный вопрос, слазить на что? (что в замен) Правильно ли я понимаю эту фразу, писать базовую регистрацию без всяких капчей, а если понадобится, бери и дописывай? ну я с этого фрейма и срисовал принцип, есть база есть не база, сначала ищем не в базовом варианте, если нет, потом в базовом, это что касаемо классов, так и планирую делать.
Руби или питон. Начал было писать один сервис на питоне (django) потом забросил, другие дела и т.д. потом начал руби изучать понравился, может на нем напишу сервис. Капча это капча. Ею могут воспользоваться не только при регистрации. Это должна быть отдельная сущность так сказать. Ну дерзай. Codeigniter мне нравился своей простотой. Может есть что то получше хз уже мало интересуюсь как в современных движках все устроенно.
Не совсем понимаю, конечно я буду капчу использовать не только при регистрации, но и везде, где она понадобится, она и есть отдельная сущность, т.е. отдельный класс, отдельный черный ящик и любой кто будет писать какой то еще модуль, допустим доску объявлений, смело может использовать класс MyCaptcha и методы getForm и checkCode, не опасаясь, что данный плагин установлен он или нет.