Почему в Yii2 есть валидаторы на mongoid, json
Почему в Yii2 есть валидаторы на mongoid, json
Смотрел несколько проектов на yii/yii2. Везде разработчики пытаются натянуть структуру БД на формы! То бишь есть AR, он же форма с валидаторами. Структура БД не всегда соответсвует форме, и потому появляются методы типа map(), afterValidate() и beforeSave(), которые преобразуют данные форм для сохранения в БД! Все это делается в одном классе AR! Потом появляется другая форма и народ юзает сценарии и по ним делает ветвление в этих преобразующих методах!
Епрст! Это же АДСКИЙ ГОВНОКОД! Какое тут RAD! Когда разрабы yii перестанут так делать??? Yii этому потакает предоставляя сценарии и всякие валидаторы, типа:
https://github.com/yiisoft/yii2-mongodb ... idator.php
Походу народ смотрит на это и сбивается с толку, дескать в yii так и надо - натягивать глаз на ж*пу, то есть структуру БД на формы!
Помогите понять данный парадокс: зачем ж пишутся такие валидаторы?
Епрст! Это же АДСКИЙ ГОВНОКОД! Какое тут RAD! Когда разрабы yii перестанут так делать??? Yii этому потакает предоставляя сценарии и всякие валидаторы, типа:
https://github.com/yiisoft/yii2-mongodb ... idator.php
Походу народ смотрит на это и сбивается с толку, дескать в yii так и надо - натягивать глаз на ж*пу, то есть структуру БД на формы!
Помогите понять данный парадокс: зачем ж пишутся такие валидаторы?
Re: Почему в Yii2 есть валидаторы на mongoid, json
В процессе эволюции Yii занял именно такую нишу: RAD-фреймворк с «RAD-манами» – эта ниша имеет свою устойчивую аудиторию, потому что порог входа низкий. Если Yii станет более слоёным, эта аудитория скорее всего разбежится по другим фреймворкам. Итого, подобный подход выкристаллизовался естественным образом – в процессе эволюции фреймворков. Спрос рождает предложение не только на рынке, но и в мире технологий. Копните глубже и поймёте, что точно также развивается сам PHP – низкий порог входа обеспечил его огромной аудиторией. А сам язык по факту полон трэшовых механизмов (как исторических, так и привнесённых со временем).anton_z писал(а): ↑2017.03.12, 01:15 Смотрел несколько проектов на yii/yii2. Везде разработчики пытаются натянуть структуру БД на формы! То бишь есть AR, он же форма с валидаторами. Структура БД не всегда соответсвует форме, и потому появляются методы типа map(), afterValidate() и beforeSave(), которые преобразуют данные форм для сохранения в БД! Все это делается в одном классе AR! Потом появляется другая форма и народ юзает сценарии и по ним делает ветвление в этих преобразующих методах!
Епрст! Это же АДСКИЙ ГОВНОКОД! Какое тут RAD! Когда разрабы yii перестанут так делать??? Yii этому потакает предоставляя сценарии и всякие валидаторы, типа:
https://github.com/yiisoft/yii2-mongodb ... idator.php
Походу народ смотрит на это и сбивается с толку, дескать в yii так и надо - натягивать глаз на ж*пу, то есть структуру БД на формы!
Помогите понять данный парадокс: зачем ж пишутся такие валидаторы?
UPD:
https://habrahabr.ru/post/142140/ – но вы же продолжаете писать на PHP, используя указанные в этой статье конструкции, правильно? Не переходите на более совершенные языки. Вот и разработчики Yii продолжают «рендерить БД в формах». Таково нормальное распределение аудитории, интеллекта, реальных потребностей IT-сферы и т.д.
Re: Почему в Yii2 есть валидаторы на mongoid, json
Не хочется начинать холивар. Статья 2012 года. С тех пор многое поменялось. PHP полон недостатков, но на нем можно жить и работать.rugabarbo писал(а): ↑2017.03.12, 02:17 UPD:
https://habrahabr.ru/post/142140/ – но вы же продолжаете писать на PHP, используя указанные в этой статье конструкции, правильно? Не переходите на более совершенные языки. Вот и разработчики Yii продолжают «рендерить БД в формах». Таково нормальное распределение аудитории, интеллекта, реальных потребностей IT-сферы и т.д.
Yii-говнопрогеры усугубляют все своим непониманием ООП и я решил немного пожаловаться.
Да, я знаю небольшой Java-стек, но вакансий в моем городе практически нет. (Думаю, подобная ситуация характерна для любого губернского города).
В любом случае, спасибо за точку зрения. Я понял, что поднимать такие вопросы бессмысленно. Можно закрывать тему.
Re: Почему в Yii2 есть валидаторы на mongoid, json
Я не ради холивара. Хотел показать эволюционную природу вещей. Всё начинается в каком-либо виде, а затем кристаллизуется в результат в соответствии с воздействием окружающих факторов. Ну и накладывается ещё инертность толпы: если даже появляется что-то лучшее – миграция толпы на лучшее происходит очень медленно.anton_z писал(а): ↑2017.03.12, 04:50Не хочется начинать холивар. Статья 2012 года. С тех пор многое поменялось. PHP полон недостатков, но на нем можно жить и работать.
Yii-говнопрогеры усугубляют все своим непониманием ООП и я решил немного пожаловаться.
Да, я знаю небольшой Java-стек, но вакансий в моем городе практически нет. (Думаю, подобная ситуация характерна для любого губернского города).
В любом случае, спасибо за точку зрения. Я понял, что поднимать такие вопросы бессмысленно. Можно закрывать тему.
А в PHP вряд ли что-то поменяется кардинально в обозримом будущем, потому что груз исторического наследия слишком большой, а переписывание с нуля уже проходили (6.0 так и не вышла).
Re: Почему в Yii2 есть валидаторы на mongoid, json
Хорошо сказано! Именно благодаря низкому порогу вхождения я заинтересовался фреймворком. Yii мой первый фреймворк, поработав с которым я уже понял, что с фреймворков никогда не слезу. И мне нравится то, что хоть я и слаб в PHP, ООП и знаниях разных там парадигм - я смог сделать вполне себе один проект и сейчас начал работу над вторым.rugabarbo писал(а): ↑2017.03.12, 02:17
В процессе эволюции Yii занял именно такую нишу: RAD-фреймворк с «RAD-манами» – эта ниша имеет свою устойчивую аудиторию, потому что порог входа низкий. Если Yii станет более слоёным, эта аудитория скорее всего разбежится по другим фреймворкам. Итого, подобный подход выкристаллизовался естественным образом – в процессе эволюции фреймворков. Спрос рождает предложение не только на рынке, но и в мире технологий. Копните глубже и поймёте, что точно также развивается сам PHP – низкий порог входа обеспечил его огромной аудиторией.
А если бы я попробовал войти в symfony c теми моими знаниями все так и закончилось, не успев начаться. Без хорошего учителя под рукой было бы тяжело или даже невозможно освоить symfony. Нужны более менее твердые знания. И это не значит, что изучая Yii можно начинать говнокодить. Это можно делать на любом фреймворке - примеров очень много.
А программирование я люблю. И с изучением Yii я все глубже и глубже начинаю понимать как лучше делать, как нельзя делать. И на форуме много профессионалов, с которыми решаются любые задачи.
Поверьте, у этого фреймворка тоже есть не маленькая аудитория. Yii уверенно занял свою нишу на рынке фреймворков.
А на тему того, что во фреймворке все сделано не так, как нужно, вопреки всем канонам и правилам, и вообще он прививает неправильную привычку писать программы - это все бред. Для 50% сайтов это и не нужно. Я начинал изучение с yii1, но потом быстро понял, что лучше перескочить на yii2. Мне все очень нравится. Да, у меня практически нет опыта, но я познакомился со многими вопросами по ходу изучения фреймворка.
Yii!
Осторожно! Вы общаетесь с новичком
Re: Почему в Yii2 есть валидаторы на mongoid, json
Уже обсуждали с Вами же в viewtopic.php?f=13&t=40623
Re: Почему в Yii2 есть валидаторы на mongoid, json
Да я не перестаю удивляться, что столько народу делает хрень и при этом убеждены что это суперкруто и они программируют "на современном, профессиональном фреймворке в соответствии с ООП и стандартами". Да, вы правы, с этим надо смириться и работать.
Re: Почему в Yii2 есть валидаторы на mongoid, json
Есть возражения - напиши своё.
Пишешь что, в справке "адский говнокод", но правильный код не прикладываешь, или не пишешь - где написано правильно.
То есть начинающим, которые тут сидят все равно не получится понять что они делают не так, и продолжат писать по примерам из справки.
Пишешь что, в справке "адский говнокод", но правильный код не прикладываешь, или не пишешь - где написано правильно.
То есть начинающим, которые тут сидят все равно не получится понять что они делают не так, и продолжат писать по примерам из справки.
Re: Почему в Yii2 есть валидаторы на mongoid, json
Для начала нужно, чтобы формы были отдельно, записи в бд отдельно. Их должны представлять отдельные классы. И никаких UTCDate на форме.Medic84 писал(а): ↑2017.03.13, 08:32 Есть возражения - напиши своё.
Пишешь что, в справке "адский говнокод", но правильный код не прикладываешь, или не пишешь - где написано правильно.
То есть начинающим, которые тут сидят все равно не получится понять что они делают не так, и продолжат писать по примерам из справки.
Re: Почему в Yii2 есть валидаторы на mongoid, json
Отделять их или нет - решает программист.anton_z писал(а): ↑2017.03.13, 12:27Для начала нужно, чтобы формы были отдельно, записи в бд отдельно. Их должны представлять отдельные классы. И никаких UTCDate на форме.Medic84 писал(а): ↑2017.03.13, 08:32 Есть возражения - напиши своё.
Пишешь что, в справке "адский говнокод", но правильный код не прикладываешь, или не пишешь - где написано правильно.
То есть начинающим, которые тут сидят все равно не получится понять что они делают не так, и продолжат писать по примерам из справки.
- Cacatuidae
- Сообщения: 65
- Зарегистрирован: 2017.01.08, 17:39
Re: Почему в Yii2 есть валидаторы на mongoid, json
Так создали бы статью с примерами "как правильно", и почему это правильно, какой от этого профит и так далее. Ну а так же не забыть упоминуть минусы решений "как правильно", или там нету минусов?)anton_z писал(а): ↑2017.03.13, 12:27Для начала нужно, чтобы формы были отдельно, записи в бд отдельно. Их должны представлять отдельные классы. И никаких UTCDate на форме.Medic84 писал(а): ↑2017.03.13, 08:32 Есть возражения - напиши своё.
Пишешь что, в справке "адский говнокод", но правильный код не прикладываешь, или не пишешь - где написано правильно.
То есть начинающим, которые тут сидят все равно не получится понять что они делают не так, и продолжат писать по примерам из справки.
Re: Почему в Yii2 есть валидаторы на mongoid, json
Хотя фреймворк тоже "виноват", потому что позволяет рендерить формы на основе AR.rugabarbo писал(а): ↑2017.03.13, 12:29Отделять их или нет - решает программист.anton_z писал(а): ↑2017.03.13, 12:27Для начала нужно, чтобы формы были отдельно, записи в бд отдельно. Их должны представлять отдельные классы. И никаких UTCDate на форме.Medic84 писал(а): ↑2017.03.13, 08:32 Есть возражения - напиши своё.
Пишешь что, в справке "адский говнокод", но правильный код не прикладываешь, или не пишешь - где написано правильно.
То есть начинающим, которые тут сидят все равно не получится понять что они делают не так, и продолжат писать по примерам из справки.
Re: Почему в Yii2 есть валидаторы на mongoid, json
Хорошо, надо попробовать написать. "Первый шаг на пути к свету: Разделяем AR и форму" - это заголовок)Cacatuidae писал(а): ↑2017.03.13, 12:32Так создали бы статью с примерами "как правильно", и почему это правильно, какой от этого профит и так далее. Ну а так же не забыть упоминуть минусы решений "как правильно", или там нету минусов?)anton_z писал(а): ↑2017.03.13, 12:27Для начала нужно, чтобы формы были отдельно, записи в бд отдельно. Их должны представлять отдельные классы. И никаких UTCDate на форме.Medic84 писал(а): ↑2017.03.13, 08:32 Есть возражения - напиши своё.
Пишешь что, в справке "адский говнокод", но правильный код не прикладываешь, или не пишешь - где написано правильно.
То есть начинающим, которые тут сидят все равно не получится понять что они делают не так, и продолжат писать по примерам из справки.
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: Почему в Yii2 есть валидаторы на mongoid, json
Если форма начинает не соответствовать модели или использоваться в другом контексте — сделайте ей свою модель, которая к AR отношения не имеет. У нас даже в демо-приложениях есть LoginForm и ContactForm. Если где-то в гайдах мы учим иначе — ткните, поправлю.
В самих сценариях и возможности использовать AR для форм нет ничего ужасного, если не принимать это всё как лучшую практику и не доводить до абсурда.
В самих сценариях и возможности использовать AR для форм нет ничего ужасного, если не принимать это всё как лучшую практику и не доводить до абсурда.
Нравится Yii? Давайте сделаем его лучше!.
Re: Почему в Yii2 есть валидаторы на mongoid, json
В гайдах есть. Вот примеры:
* http://stuff.cebe.cc/yii2docs-ru/guide- ... odels.html
* http://stuff.cebe.cc/yii2docs-ru/guide- ... input.html
AR здесь находится непосредственно между вводом пользователя и БД.
Я бы сказал так:
* для фиксированных (неразвивающихся) проектов это удобно (позволяет быстро сделать форму и не обслуживать лишние слои)
* для растущих проектов рано или поздно это приводит к необходимости рефакторинга: viewtopic.php?t=16786
Если посмотреть на Symfony, там явное разделение: http://symfony.com/doc/current/forms.ht ... ubmissions – ORM-сущности заполняются с помощью вызова:
Код: Выделить всё
$entity = $form->getData();
Так что дров можно наломать в любом фреймворке.
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: Почему в Yii2 есть валидаторы на mongoid, json
Это табличный ввод. Там что в форме, что в модели поля одинаковые. Никаких отклонений, ничего нового или отличного в форме нет.В гайдах есть. Вот примеры
А может быть как-то ещё? Рефакторинг — это технический долг. Стало нужно отрефакторить — отрефакторили. Не стало нужно — выиграли время.для растущих проектов рано или поздно это приводит к необходимости рефакторинга
Нравится Yii? Давайте сделаем его лучше!.
Re: Почему в Yii2 есть валидаторы на mongoid, json
С этого обычно и начинается "каша" в коде: "У нас здесь в БД и в HTML-формах поля одинаковые, давайте не париться, сопоставлять их один к одному", – затем появляется с десяток сценариев в каждой модели, затем появляются кейсы с участием нескольких AR, затем эти же AR начинают участвовать в ajax-обработчиках и вычислениях, плавно добавляются сценарии из backend-части... А потом приходит момент (он обязательно приходит), когда всё это дело становится неподдерживаемым. Начинается рефакторинг с адской болью, потому что тесты никто не писал, бизнес требует сохранять темпы, а обращения к AR рассованы по всем кускам кода.
Да, может быть. Я работал и так, и так. Скажу, что при большом количестве рефакторинга мотивация команды куда быстрее падает, потому что никто не любит перепиливать уже сделанные вещи. Если в каждом очередном спринте оказывается всего одна новая фича, а остальные задачи по рефакторингу – жди ухода людей.
Я вообще не представляю, какие железные нервы надо иметь, чтобы такие вещи рефакторить: viewtopic.php?t=16786 – поэтому в проектах сделанных на Yii у меня никогда не бывает сценариев и правил валидации в AR.
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: Почему в Yii2 есть валидаторы на mongoid, json
Момент приходит только если команда понятия не имеет о том, что такое технический долг и что с ним делать. Плюс не может нормально объяснить начальству, зачем нужны тесты и рефакторинг. Плюс не умеет оценивать время с учётом рефакторинга.А потом приходит момент (он обязательно приходит), когда всё это дело становится неподдерживаемым.
В этом случае форсирование использования отдельных моделей для форм не поможет. Результат будет ровно тем же.
Поэтому не должно существовать такой штуки как «задача по рефакторингу». Рефакторинг — это не действо само по себе. Он делается с целью. Понадобилось решить задачу реально нужную. Упёрлись в архитектуру, видно как нужно — идём к начальству, объясняем, выбиваем дополнительное время, готовим код под задачу, делаем задачу.Да, может быть. Я работал и так, и так. Скажу, что при большом количестве рефакторинга мотивация команды куда быстрее падает, потому что никто не любит перепиливать уже сделанные вещи. Если в каждом очередном спринте оказывается всего одна новая фича, а остальные задачи по рефакторингу – жди ухода людей.
А чего тут сложного? Не понимаю, почему рефакторинг вызывает такую реакцию.Я вообще не представляю, какие железные нервы надо иметь, чтобы такие вещи рефакторить: viewtopic.php?t=16786
Нравится Yii? Давайте сделаем его лучше!.
Re: Почему в Yii2 есть валидаторы на mongoid, json
По моему опыту выходит так:
1. Тестами всё не покроешь.
2. Технический долг в плохой архитектуре имеет тенденцию расти даже при грамотном техническом менеджменте.
3. Оценивать время на задачу (даже без учёта рефакторинга) умеют 1 программист из 10. В остальных случаях приходится оценку программиста умножать на X.
4. Не всегда с ходу видно, как нужно всё переделать, чтобы сделать новую задачу нормально. Если связанность оказалась слишком высокой, то мозг просто не способен охватить то количество связей и этапов рефакторинга, которые смогут привести систему в норму перед реализацией новой задачи. И тогда наступает печаль.
5. Не встречал программистов, которые любят рефакторить чужой код (а в большинстве случаев приходится именно чужой). Гораздо больше энтузиазма вызывает реализация новой задачи.
Всё это имхо, без претензий на абсолютную истину. Возможно, мне просто не повезло с коллегами/проектами, которых пришлось встретить на жизненном пути.
1. Тестами всё не покроешь.
2. Технический долг в плохой архитектуре имеет тенденцию расти даже при грамотном техническом менеджменте.
3. Оценивать время на задачу (даже без учёта рефакторинга) умеют 1 программист из 10. В остальных случаях приходится оценку программиста умножать на X.
4. Не всегда с ходу видно, как нужно всё переделать, чтобы сделать новую задачу нормально. Если связанность оказалась слишком высокой, то мозг просто не способен охватить то количество связей и этапов рефакторинга, которые смогут привести систему в норму перед реализацией новой задачи. И тогда наступает печаль.
5. Не встречал программистов, которые любят рефакторить чужой код (а в большинстве случаев приходится именно чужой). Гораздо больше энтузиазма вызывает реализация новой задачи.
Всё это имхо, без претензий на абсолютную истину. Возможно, мне просто не повезло с коллегами/проектами, которых пришлось встретить на жизненном пути.
Re: Почему в Yii2 есть валидаторы на mongoid, json
Стало нужно - пошли на другую работу.)
Представим, что мы строим дом вместо разработки ПО, а архитектура ПО это фундамент. Если его плохо заложить, то со временем дом придет в негодность и поможет только постройка нового дома. То же самое и с ПО. Народ же придумывает всякие правила и парадигмы, слабую связность, не от того, что делать нечего, а чтобы обеспечить возможность легко адаптировать систему под изменяющиеся требования. А это один из основных показателей качества крупной системы.
Вот этот валидатор в официальном расширении зачем нужен, если формы и AR надо разделять при малейшем несоответствии?
https://github.com/yiisoft/yii2-mongodb ... idator.php
Народ ведь смотрит, а потом клепает свое:
https://github.com/paulzi/yii2-json-beh ... idator.php
Кстати, чаще всего форма отличается по данным от БД, а не совпадает с ней (кроме приложений-блогов, и то там даты). Может реально рекомендацию напишиете, что нужно разделять? Например, здесь:
http://www.yiiframework.com/doc-2.0/gui ... forms.html
Что-то типа этого:
If a form data structure or a format differs from the database representation, the form model and the row in the database should be represented by different classes.