
Sergey
10.01.2017
21:22:53
https://youtu.be/zVNrqo9XGOs?t=11m58s
11:58
там часть про то что нужно продумывать наперед а потом про то что не нужно этого делать и YAGNI)

Yura
10.01.2017
21:24:12
ну бля

Google

Yura
10.01.2017
21:24:16
как вам сказать
если домен меняется пару раз в месяц
all the data from the single endpoint
not breaking changes
закрыл

Sergey
10.01.2017
21:26:05
> если домен меняется пару раз в месяц
это как?

Aleh
10.01.2017
21:27:08
ну он про правила "вот этот процесс вот такой", а потом "уупс, не такой"

Sergey
10.01.2017
21:27:40

Aleh
10.01.2017
21:27:41
но это не проблема
должна быть

Yura
10.01.2017
21:27:55
это проблема которой не избежать

Aleh
10.01.2017
21:28:03
т.е. не проблема)

Yura
10.01.2017
21:28:04
поэтому мы к ней готовы

Google

Aleh
10.01.2017
21:28:08
ну не особо

Yura
10.01.2017
21:28:14
ну в абстракте

Aleh
10.01.2017
21:28:15
только начинаем приспосабливаться)

Yura
10.01.2017
21:28:31
как при это endpoints не меняются
я не знаю

Aleh
10.01.2017
21:28:50
у нас дикая проблема с неймингом)

Yura
10.01.2017
21:28:52
у фэйсбука домен не меняется

Aleh
10.01.2017
21:28:54
причем всего)
начиная от самих продуктов

Yura
10.01.2017
21:29:06
да
их тоже меняют пару раз в месяц

Aleh
10.01.2017
21:29:19
заканчивая какими-то простыми терминами

Yura
10.01.2017
21:30:02
ну да
если домен не сильно разработан и эксперты сами не такие уже эксперты как хотелось бы
то туго

Sergey
10.01.2017
21:57:00

Aleh
10.01.2017
22:19:48
немного офтопа из мира js: в v8 добавили модули

Sergey
10.01.2017
22:53:36
воу воу
круто)

Google

da horsie
11.01.2017
06:37:19
насколько бредовой выглядит идея сделать все модели immutable?
а сеттеры заменить на что-то вроде withProperty('new value'): self

Jan
11.01.2017
09:07:53
А смысл?
Модель же не value object, имеет состояние.

Yura
11.01.2017
09:31:26

Sergey
11.01.2017
09:31:51
иммутабельность ради иммутабельности?

Aleh
11.01.2017
09:32:56
да уже в @oop_ru обсудили)

Sergey
11.01.2017
09:56:29
например возьмем старую добрую сущность юзера
class User
{
private $id;
private $email;
private $password;
private $name;
}

Sergey
11.01.2017
10:00:33
у него будут методы:
- __construct(UserBuilder $builder
- authenticate(string $password, PasswordEncoder $encoder)
- changePassword(string $oldpassword, string $newPassword, PasswordEncoder $encoder)
- updateProfile(string $name)

F01134H
11.01.2017
10:03:38
ничоси.

Artem
11.01.2017
10:15:01
кто какую документную БД использует? особо интересует как ведет себя couchbase с шардированием.

Yaroslav
11.01.2017
10:27:59
couchbase нормально шардируется

Jan
11.01.2017
10:28:53
@fes0r а зачем в сущность UserBuilder передавать?

Sergey
11.01.2017
10:32:19

Jan
11.01.2017
10:33:15
И все геттеры будут «проксями» для билдера?

Sergey
11.01.2017
10:33:28

Google

Jan
11.01.2017
10:33:31
Типа getAvatar.

Sergey
11.01.2017
10:33:56
билдер используется только на момент создания сущности, не более
билдер = фабрика по сути
ты наполняешь ее стэйтом, просишь сбилдить юзера

Jan
11.01.2017
10:34:32
С сеттерами, геттерами, где-то видел такой подход.

Sergey
11.01.2017
10:34:46
можно еще у билдера просто делать проперти публичными
и тогда это будет что-то типа DTO

Admin
ERROR: S client not available

Sergey
11.01.2017
10:35:17
DTO + фабрика

Aleh
11.01.2017
10:36:57
фишка билдера, что ему можно почастям закинуть данные, которые сущность требовала бы все сразу

Jan
11.01.2017
10:38:48
а не получится так, что сущность будет в неконсистентном состоянии?

Vadim
11.01.2017
10:39:30
чего билдим? и так ли он нужен, этот билдер в данном случае?

Sergey
11.01.2017
10:50:00
если инварианты/прекондишены не соблюдаются - плюемся исключениями
билдеры не нужны когда у тебя value object-ы простенькие
когда больше 3-х аргументов никогда не нужно будет передавать

Hell
11.01.2017
11:00:53
StorytellerCZ: If you are starting new project you shouldn't use HybridAuth.
вашу мать, а что нужно использовать для новых проектов что осуществлять эту долбанную гибридную авторизацию?

Google

F01134H
11.01.2017
11:11:45
Умные человеки
как определить code coverage в пхп?
какие инструменты есть

finkel
11.01.2017
11:13:27

Vadim
11.01.2017
11:13:33
phpunit

F01134H
11.01.2017
11:14:02
там можно степень покрытия смотреть как то?

finkel
11.01.2017
11:14:15

Viktor
11.01.2017
11:14:19
а как?

Vadim
11.01.2017
11:14:21
он вроде в процессе выполнения тестов это считает

F01134H
11.01.2017
11:14:30
и пишет в лог куда то?

Vadim
11.01.2017
11:14:35
нельзя просто так взять и с воздуха это определить
хз, не ковырял этот модуль, но он там есть и делает магию в процессе
при чем юзает какую-то интересную стандартную пыховскую штуку внутри, о которой я узнал только ковыряя его

finkel
11.01.2017
11:15:32
запускаешь тесты с флагом --coverage-html dir, как то так, там разные есть флаги, xml,html,console

Aleh
11.01.2017
11:15:36
phpunit вроде умеет lcov
и может html, text, json репорты сам из него строить или можно юзать другие тулзы
их много, phpstorm умеет в lcov

Yura
11.01.2017
11:19:20
у кого-нибудь была protected ломка?

Vadim
11.01.2017
11:20:23
если хочется извращений, то можно вручную что-ниубдь сделать https://xdebug.org/docs/code_coverage :)

Sergey
11.01.2017
11:23:42

Aleh
11.01.2017
11:23:58
когда хочется немного понаследовать