
Sergey
08.05.2018
09:42:04
не "спека по rest" - ее не существует

Charles
08.05.2018
09:42:17
что ее нет знаю
ок, пойду читать, спс

Sergey
08.05.2018
09:42:54
ну короч, основной посыл - урлы - плевать какие, главное в этом все идемпонетность GET/PUT/DELETE/OPTIONS запросов, а так же отсутствие гарантированной идемпонетнтности у POST

Google

Sergey
08.05.2018
09:43:38
ну то есть /users/{id}/1 вместо /users/me только из-за идемпотентности при разных клиентах. Что бы http кэш фурычил. Но сегодня все класть хотели на http кэш а значит вообще плевать

Charles
08.05.2018
09:44:59
меня спека больше волнует чем все) пусть это и не рест спека а спека протокола хттп, там все равно достаточно рекомендаций чтобы снизить к минимуму возможные варианты реализаций рестфул апи. но спасибо

Roman
08.05.2018
09:45:46
Отдавать JSON поверх HTTP -- это рестфул?

Charles
08.05.2018
09:46:06
а каким макаром они вобще в одной плоскости?

Sergey
08.05.2018
09:46:31

Charles
08.05.2018
09:46:47
сам диссер только в выкладках
в пересказах и т.д. и т.п.

Alan
08.05.2018
09:47:20
он же потом и писал ЧТО не называть рестфулом)

Sergey
08.05.2018
09:47:27
https://www.slideshare.net/royfielding/a-little-rest-and-relaxation

Alan
08.05.2018
09:48:16
http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven

Sergey
08.05.2018
09:49:13
ну короч, все что тебе надо это RPC over http. не стоит юзать то чего не понимаешь. Всеравно получится RPC)

Roman
08.05.2018
09:50:00

Charles
08.05.2018
09:50:04
пойду матчасть доучивать

Google

Charles
08.05.2018
09:50:16
всем спасибо

Sergey
08.05.2018
09:50:20

Charles
08.05.2018
09:50:21
i'll be back

Andrew
09.05.2018
09:32:41
Скажите пожалуйста, при работе с ValueObject что принимает VO при изменении
пример
public function change(string $email) : self
или
public function change(UserEmail $email) : self
UserEmail это VO. обычная строка, надо валидировать строку еще. С одной стороны, второй вариант вроде удобнее, однако, мы раскидываем инициализацию new UserEmail по всему проекту
что не оч хорошо.

Dmitry
09.05.2018
09:39:54

Andrew
09.05.2018
09:40:22
@oldy777 не совсем понял

Dmitry
09.05.2018
09:41:07

Adel
09.05.2018
09:42:09

Like
09.05.2018
09:42:51

Andrew
09.05.2018
09:43:15
То есть нчиего страшного что будет где не попадя раскидано ->change(new UserEmail('some@email.com'))

Adel
09.05.2018
09:43:31

Andrew
09.05.2018
09:43:43
или ->compare(new UserEmail('qwe@email.com'))
сейчас уменя вот так ->compare('qwe@qwe.com')
а уже в VO, делаю new self($newEmail)

Google

Andrew
09.05.2018
09:44:53
то есть внутри самого VO в методе, инициализирую, тем самым валидирую новую, входящую строку

Like
09.05.2018
09:45:05

Dmitry
09.05.2018
09:45:05
change - это метод VO ?

Andrew
09.05.2018
09:45:10
да

Dmitry
09.05.2018
09:45:34
не должно там такого метода быть
ты хрень какую то делаешь :)

f4rt~
09.05.2018
09:45:48

Andrew
09.05.2018
09:46:04
у меня есть юзер, вызывает родной метод

Dmitry
09.05.2018
09:46:05
new VO('mail')->change('mail2') ?

Andrew
09.05.2018
09:46:11
$user->changeEmail('string')
в методе changeEmail
$this->email->change()

Dmitry
09.05.2018
09:46:35
в самом VO не надо менять, меняй у юзера
$this->email = VO

Like
09.05.2018
09:46:57

Andrew
09.05.2018
09:47:12
@shindakioku ?

Adel
09.05.2018
09:47:31

Andrew
09.05.2018
09:47:57
@oldy777 а входящие данные какого типа, принимать нвоый VO? Ведь если мы создаем из строки, по идее валидация все-равно будет
$user->changeEmail('new@email.com')
public fucbntion newEmail(string ?? UserEmail $email)

Google

Like
09.05.2018
09:48:34
почему это ?
Потому что иммутабельность
На кой леший разрешать изменять уже готовый email? Пускай клепает новый объект

Dmitry
09.05.2018
09:48:37

f4rt~
09.05.2018
09:48:52

Like
09.05.2018
09:49:00

Andrew
09.05.2018
09:49:08
у меня создаеться нвоый обьект, я написал выше
то есть внутри самого VO в методе, инициализирую, тем самым валидирую новую, входящую строку

Dmitry
09.05.2018
09:49:20

Maksim
09.05.2018
09:49:25
если надо изменить значение vo, то надо просто создать новый)

f4rt~
09.05.2018
09:49:26

Andrew
09.05.2018
09:50:31
так, еще раз, compare метод должен принимать параметром UserEmail, VO, а метод changeEmail, принимать обычную строку, да?

Dmitry
09.05.2018
09:50:31

Andrew
09.05.2018
09:50:46
@oldy777 immutable

Adel
09.05.2018
09:51:26

Maksim
09.05.2018
09:51:39
новый во и всё

Adel
09.05.2018
09:51:47
просто представь ради прикола, что email в будущем будет не строка.. а наприме огромное число

Dmitry
09.05.2018
09:51:53
@oldy777 immutable
ты понимаешь что ты вместо new VO перекладываешь отвественность за создание на сам VO? Т.е. если VO это цифра три, ты на цифру 3 кладешь отвественность за создание других цифр

Adel
09.05.2018
09:52:00
и весь код твой придется менять

Dmitry
09.05.2018
09:52:57

Andrew
09.05.2018
09:53:06
@Adelf32 ааа, тогда да, проще принимать уже VO

Like
09.05.2018
09:53:18

Google

Andrew
09.05.2018
09:53:27
всем спасибо)

Dmitry
09.05.2018
09:54:28
т.е. вы предлагаете ему new VO('email')->changeEmail(new VO('email2')) ??? ))))

Maksim
09.05.2018
09:54:43
нет)
у во нету методов для смены значения

Like
09.05.2018
09:54:57
changeEmail должен быть у юзера ?

Maksim
09.05.2018
09:55:07
а у юзера есть метод для смены во)

Dmitry
09.05.2018
09:55:15
а вот у него есть :)
ладно, надеюсь он правильно все понял

Andrew
09.05.2018
09:56:02
да
уберу метод change из VO
и принимать надо уже Vo

Adel
09.05.2018
09:56:28
вы чувствуете?
чувствуете, что мир стал немного, но лучше?

Andrew
09.05.2018
09:56:42
да)
надо тесты поправить)

Like
09.05.2018
09:57:42

Andrew
09.05.2018
09:58:00
он не менет
там cpoy self

Like
09.05.2018
09:58:07
Сильна

Andrew
09.05.2018
09:58:08
был