@prophp7

Страница 1123 из 1387
Sergey
20.06.2018
12:28:49
это просто данные, это не инварианты твоих моделей

Artem
20.06.2018
12:41:05
а как обычно данные присылают сервису (ну, я так называю то, что вызывает контроллер)? Вот пришёл реквест в контроллер, дальше в контроллере создаётся какой-то простой объект с набором данных и отправляется сервису? По идее это было бы удобно, особенно когда куча параметров приходит, потому-что иначе список параметров метода сервиса будет километровым

Google
Artem
20.06.2018
12:45:27
Tex
20.06.2018
12:46:22
а вот тут интересный момент, валидация происходит до того как отправить данные в сервис?
да, потому что не хочется чтобы сервис возвращал или то что должен вернуть или ошибки валидации. ифы портят красоту.

валидируешь данные, если есть ошибки - тут же формируешь респонз и кидаешь обратно. если всё окей - пошёл в сервисы.

Artem
20.06.2018
12:48:33
но что тогда, если у нас 2 способа ввода информации: 1. Вэб морда 2. Пользователи скидываю xml на фтп и нам надо засосать всё это дело. Конечно во втором случае валидация тоже нужна, а процесс её вызова получается завязан на контроллер

Tex
20.06.2018
12:51:29
но что тогда, если у нас 2 способа ввода информации: 1. Вэб морда 2. Пользователи скидываю xml на фтп и нам надо засосать всё это дело. Конечно во втором случае валидация тоже нужна, а процесс её вызова получается завязан на контроллер
ну я отношусь к валидатору как к сервису в каком-то роде. информация о том, как валидировать, лежит либо в нём, если он заточен под объект, либо как-то привязана к объекту, если валидатор обобщенный (как в симфони, например). ты можешь вызвать его в контроллере и собрать из ошибок нужный тебе вью (html, json, xml, whatever). можешь вызвать его в команде, которая разбирает xml, получить тот же набор ошибок, но поступить с ними уже иначе, на почту там отправить ошибку или тупо залогировать или что ты там хочешь. т.е. дублируется между контроллером и командой только строчка $this->validator->validate(), не вижу в этом ничего страшного.

Artem
20.06.2018
13:02:08
UI - > DTO -> application
это да, но вопрос был скорее о том, в какой момент валидировать. Ну или я не понял твою мюсль. Вообще конечно выглядит логичным отдавать данные уже проверенные

Sergey
20.06.2018
13:02:43
> в какой момент валидировать. между UI и приложением

у тебя эта штука называется контроллер

у меня - адаптер)

XML файл - это про batch процессинг который в целом может быть разбит просто на список DTO которые закидываются по одной

Tex
20.06.2018
13:05:57
У меня просто была мысль сделать объект Result, который бы содержал в себе ошибки и результат выполнения операции. Хотя там всё равно надо было бы вызывать метод проверки есть ли ошибки...
о том и речь. обобщение в один объект всё равно не спасёт тебя от ифов. даже если ты напишешь хитрую сериализацию, которая сама решит что надо выдать юзеру, тебе как минимум нужно будет что-то в духе $statusCode = $result->isError() ? 400 : 200 чем меньше вариантов отдает метод, тем меньше тебе надо проверять что же он вернул. и запаковка в один объект не решает проблему, по факту ты просто общий тип изобрёл. только вот использовать его в общем виде ты не можешь.

Google
Artem
20.06.2018
13:06:34
у меня - адаптер)
вот кстати недавно меня начал занимать вопрос, чем является контроллер? У меня такое ощущение сложилось, что это преобразователь данных для способа ввода через вэб. То есть ответственность контроллера - преобразовать данные из реквеста в форму понятную приложению. Я так понимаю, что приведение типов тоже входит в обязанность контроллера. Ну например приходит поле datetime в виде строки, а контроллер из него должен сделать DateTime объект например

Sergey
20.06.2018
13:07:20
1. мэпим данные на DTO 2. валидируем DTO (можно декоратором над приложением, тут люди любят упарываться во всякие command bus 3. если валидация не прошла - можно или кинуть исключение или реально вернуть какой-то объект где будет поле errors непустое (привет го)

вообще можешь погуглить GRASP controller

контроллер в контексте http приложения это просто адаптер http <-> application. Соответственно для CLI приложения у нас свой адаптер а для xml batch processing свой

Ramil
20.06.2018
13:16:13
Привет, подскажите пожалуйста канал в котором выкладывают книги по программированию.

Artem
20.06.2018
13:16:34
валидировать декоратором над приложением - это любопытно, я бы сам до такого не додумался ;О То есть сначала валидируем в декораторе, а если свалидировалось - передаём управление декорируемому объекту? Просто тут сразу возникают вопросы о том, какие значения будут возвращать декоратор и декорируемый. По идее у них же интерфейсы должны быть одинаковые. Тогда декоратор будет возвращать ошибки, а декорируемый результат, а это уже разные интерфейсы. Или я чего-то не понял

Ramil
20.06.2018
13:18:48
а какие книги интересуют?
по веб разработке

Maksim
20.06.2018
13:20:42
все книги по веб разработке - мусор)

годится только для растопки печи)

Ramil
20.06.2018
13:21:02
ты хоть одну прочитал?

Maksim
20.06.2018
13:21:16
нет конечно

Ramil
20.06.2018
13:21:31
ну вот, смотри дальше ютуб

Artem
20.06.2018
13:21:37
по веб разработке
вообще-то я не знаю таких каналов (но это не показатель, я вообще в телеграме 2 дня как зарегистрировался). А так бы, если бы я с нуля начинал, топросто в инете поискал, на рутрекере. Либо попытался какие-то курсы найти

Maksim
20.06.2018
13:21:50
какие дерзкие джуны-то нынче пошли...

Bohdan
20.06.2018
13:22:16
ну вот, смотри дальше ютуб
ютуб полезнее книг по разработке будет

Ihor
20.06.2018
13:22:17
Привет, подскажите пожалуйста канал в котором выкладывают книги по программированию.
Страуструп теория программирования на с Кнут теория алгоритмов Александреску ооп и с Дейт введение в бд

Ihor
20.06.2018
13:23:09
это смотря с какой стороны посмотреть ))

Google
Maksim
20.06.2018
13:23:11
ему надо чёт вроде свой блог за 21 день)

Artem
20.06.2018
13:24:11
боюсь если человек ищет книги по вэб программированию - это даже не джун, а совсем начинающий =\ Это вот я джун (и то только потому, что это php :D )

Ramil
20.06.2018
13:26:24
В книгах как раз очень много полезной инфы.

Maksim
20.06.2018
13:26:37
в нигах по веб разработке полезной инфы нет)

но ты пока не в состоянии понять о чём речь)

Bohdan
20.06.2018
13:27:07
практические книги устаревают через полгода после выхода

Ramil
20.06.2018
13:27:51
И что посоветуете для изучения? Только документацию?

Она всегда актуальна)

Bohdan
20.06.2018
13:28:13
посоветуем учить не веб-разработку, а программирование и инфраструктуру

Maksim
20.06.2018
13:29:08
И что посоветуете для изучения? Только документацию?
изучать надо программирование) концептуальные подходы. А не смотреть как копипастить jquery в сайт, что бы окошечки всплывали.

Ramil
20.06.2018
13:29:58
Есть примеры, сайты, книги, каналы?

Maksim
20.06.2018
13:30:08
ну тебе там выше накинули. Этого на пол года хватит)

Sergey
20.06.2018
13:30:26
ого, рекомендую Александреску для начала, неплохо так

я б посоветовал в качестве базы почитать SICP

Ramil
20.06.2018
13:31:10
Спасибо.

Maksim
20.06.2018
13:31:20
можно его гофом добить) но вообще, ютубчик - не такой уж и плохой вариант :) так-то чтиво со старта будет тяжко усваиваться

Ramil
20.06.2018
13:31:41
я на freecodecamp

Maksim
20.06.2018
13:32:58
для пхп в частности можно зандастру взять. Он в целом совсем базовые вещи объясняет вменяемо. Только не надо воспринимать всё, что там написано за чистую монету. так, направление укажет

Eugene
20.06.2018
13:33:25
зандстра для начала это как то мощновато

Google
Eugene
20.06.2018
13:33:33
Котеров?

Maksim
20.06.2018
13:33:43
ну перед зандастрой синтаксис на пхп.нете почитать и ок)

Eugene
20.06.2018
13:34:18
ну вот оч хорошо заходит связка Котеров \Зандстра

Artem
20.06.2018
13:34:27
для пхп в частности можно зандастру взять. Он в целом совсем базовые вещи объясняет вменяемо. Только не надо воспринимать всё, что там написано за чистую монету. так, направление укажет
поддерживаю, это первая книга, которую я прочитал по PHP. Правда совсем элементарные вещи я тогда уже какие-то знал. Для нубаса - самое оно

Именно во время чтения этой книжки я понял, что такое композиция и это взорвало мне мозг :D

Maksim
20.06.2018
13:35:54
чёт не припомню, что бы зандастра там нормально за композицию вещал)

Artem
20.06.2018
13:36:35
он может и не вещал, но там было про стратегию) и вот когда я понял что это такое, я просто офигевал целый день с большими круглыми глазами

Sergey
20.06.2018
13:39:46
Для начала можно взять любую книгу по веб разработке. Там можно потчерпнуть знания из серии "как подключть jQuery", "обработать форму", "отправить мыло". После прочтения можно двигаться в ту сторону куда ентереснее. Собственно во фронт или в бэк. Ну а выбрав направление можно уже и соответсвующую литературу смотреть. Тут уже много накидали вариантов. Мы джунам (вот прям с нулевыми знаниям) даем ссылки на доки и мелкие таски. Если человек тяготеет к беку, то двигаем в этом направлении, если к фронту, то в соответсвующем. ИМХО, для начала нужно определиться зачем оно нужно это самое программирование и к чему есть способности)

Maksim
20.06.2018
13:40:15
"Там можно потчерпнуть знания из серии "как подключть jQuery", "обработать форму"," та нахуя?)

Sergey
20.06.2018
13:40:38
увидеть к чему у человека есть таланты

Admin
ERROR: S client not available

Sergey
20.06.2018
13:40:45
и что он легче усваивает

Maksim
20.06.2018
13:41:01
талант к подключению jquery?)

Sergey
20.06.2018
13:41:14
для некоторых это сложно)

Bohdan
20.06.2018
13:41:19
киньте в меня ссылкой, в каких случаях instanceof плохо в пхп а то нахожу только по джаве примеры, где некоторые кейсы лечатся перегрузкой методов

Bohdan
20.06.2018
13:41:51
слышал от кого-то в чате об этом

мой кейс - обработка ивентов есть мидлвара, ловящая их, есть два гейтвея (синхронный и асинхронный диспетчеры)

сейчас юзается is_subclass_of (ну почти instanceof)

Maksim
20.06.2018
13:43:23
ну стратегия в помощь. а там в supports будет снова запрятан instanceof

Google
Maksim
20.06.2018
13:43:38
так-то ничего плохого нету. Ну прям совсем)

вопрос в другом. Почему у тебя событие знает какое оно (синхронное или асинхронное)

мб у тебя там события - вовсе не события?) а события и хуки?)

Bohdan
20.06.2018
13:58:47
ну фактически асинхронных сейчас нет это так, замашка на будущее (вижу место для этого в ближайших фичах) события - в рамках tactician все как обычно: команда потриггерила события, потом хендлеры событий и так далее

просто сделал так, чтобы события могли уйти в разные гейтвеи синхронный - просто диспетчер

Maksim
20.06.2018
14:00:51
ну я ничего плохого в instanceof не вижу) моб Сергей чёт накинет, но как по мне - норм) меня ток идея с разными "типами" событий смущает)

Bohdan
20.06.2018
14:01:35
давай холиварить

хотя

Maksim
20.06.2018
14:02:03
лень)

Bohdan
20.06.2018
14:02:20
ну другой вариант, который вижу - все события синхронны, а где надо - уже кладем в кролика аль куда мессагу

Maksim
20.06.2018
14:02:21
я ж любитель обмазаться басами) у меня нет синхронных событий)

Sergey
20.06.2018
14:18:59
ну я ничего плохого в instanceof не вижу) моб Сергей чёт накинет, но как по мне - норм) меня ток идея с разными "типами" событий смущает)
зависит от того для чего. Если для того что бы вот мне приходят подтипы и иногда там надо чуть по другому - ты положил большой болт на учения бабушки Лисков и на полиморфизм. Если тебе норм - ну ок.

но в php иногда других вариантов нет....

Maksim
20.06.2018
14:19:50
ну вот как раз случай с событиями, о которых выше говорил. мну смущает

Sergey
20.06.2018
14:19:57
для того что бы роутить ивенты я лично ничего плохого в instanceof не вижу

Bohdan
20.06.2018
14:20:04
ну вот вся аргументацию, что я нашел - "если у вас instanceof, кладите логику в класс"

Sergey
20.06.2018
14:20:10
хотя опять же мне кажется это несколько странным

Bohdan
20.06.2018
14:20:20
типа class-specific логика должна относиться к нему

Sergey
20.06.2018
14:20:37
ну мол у меня скорее листенеры разбиты на группы, одни листенеры регаются как синхронные в контексте запроса а другим можно асинхронно

Maksim
20.06.2018
14:20:40
смущает потому, что событие несёт в себе данные о том, как будет обрабатываться

Bohdan
20.06.2018
14:20:41
хотя опять же мне кажется это несколько странным
ну вот я второй вариант набросил, сейчас он выглядит логичнее > ну другой вариант, который вижу - все события синхронны, а где надо - уже кладем в кролика аль куда мессагу

Sergey
20.06.2018
14:21:00
смущает потому, что событие несёт в себе данные о том, как будет обрабатываться
оно не несет - это решает контекст на основе instanceof. просто в этом случае у тебя контекст знает слишком много

Maksim
20.06.2018
14:21:05
я бы сделал отдельный роутер по типам

Страница 1123 из 1387