
Sergey
14.10.2017
10:28:15
есть отличные упражнения на тему "как заставить себя думать" - https://habrahabr.ru/post/206802/
главное понимать что это все же упражнение и ограничения эти искусственно усилены что бы ты начал думать

Arky
14.10.2017
10:30:12
Спасибо)
"Не используйте Else" - шок)

Google

Sergey
14.10.2017
10:34:36
ну и там ссылки полезные есть по всей статье

Mikhail
14.10.2017
10:40:48
в других местах написано что должен быть один return :)

Alexandr
14.10.2017
10:42:14
"2 атрибута на класс", смешно)
created, updated, ... Всё, больше нельзя)

Pavel
14.10.2017
10:42:54

Mikhail
14.10.2017
10:43:19

Sergey
14.10.2017
10:44:04
если сделать еще в купе с CQS и делать все важные методы void - то это решает твою проблему с return)
в этом и идея ограничения - заставить тебя хоть немного думать как код дробить
понятно что в реальной жизни ты хотя бы 3-4 атрибута будешь лимит вводить)
и скорее всего будешь лимит этот нарушать ибо "нипонятно, пока так сделаю"

Google

Alexandr
14.10.2017
10:46:37
Угу, или "нипонятно, а дедлайн близко")

Alan
14.10.2017
10:47:15
во всем дедлайн виноват)

Sergey
14.10.2017
10:47:24
Угу, или "нипонятно, а дедлайн близко")
плохая мотивация. Лучше объяснять это как "если я тут дольше посижу и буду больше думать - врядли что-то лучше придумаю, а спустя время я узнаю больше о том что делаю и смогу переделать"
а дедлайн - это очень плохая отговорка
если у тебя такое часто - повод задуматься что ты делаешь не так

Arky
14.10.2017
11:18:39
Вопрос по маппингу. А какая разница между Unidirectional и Bidirectional?)

Sergey
14.10.2017
11:28:20
чем uni отличается от bi

Arky
14.10.2017
11:28:33

Sergey
14.10.2017
11:28:35
вот есть у тебя User и Report, есл и ты можешь сделать User->getReports() и Report->getUser() это двусторонняя
если только один из двух - одностороннее
в 90% случаев нужна односторонняя связь

Sergey
14.10.2017
11:29:18
а можешь привести пример оставшихся 10%?)

Arky
14.10.2017
11:29:34
У меня комменты с постом имеют двухстороннюю связь)

Sergey
14.10.2017
11:29:53
ну то есть как по мне скорее в 10% случаев сложно придумать как обойтись без двусторонней связи, но это не значит что эта двусторонняя связь нужна
это ж как циклическая ссылка, по сути
НО! доктрина не умеет односторонние one-to-many
и потому приходится городить двусторонние(

Егор
14.10.2017
11:31:26
Мне вот интересно, почему в сети никто не пробовал объяснять доктрину с точки зрения теории графов? У новичков бы очень много вопросов отпало ещё при старте.

Google

Sergey
14.10.2017
11:31:57
ну и новички не очень то умеют в теорию графов
да и доктрину проще объяснять на примере взаимоотношения объектов
(жаль что она много чего не умеет что бы было чище)

Егор
14.10.2017
11:34:15
Графы потому что объекты как вершины, связи как рёбра, а в БД - списки смежности. В доктрине например топологическая сортировка используется.
https://github.com/doctrine/doctrine2/blob/master/lib/Doctrine/ORM/Internal/CommitOrderCalculator.php

Sergey
14.10.2017
11:38:56
и как по мне - проблема с введением в доктрину в том что они воспринимают ее больше как "ну таблички на объекты мэпить", а оно ж наоборот
то о чем ты говоришь будет полезно если ты решишь свой UoW запилить для реляционной базы
но в понимании "как пользоваться доктриной" это не добавит как по мне

Arky
14.10.2017
11:40:22
А как зная только айди поста, через связи получить юзера который этот пост оставил, а также комментарии к посту, которые оставили другие юзеры.

Sergey
14.10.2017
11:40:45

Sergey
14.10.2017
11:40:48
логично ж

Arky
14.10.2017
11:41:02
Достал)

Sergey
14.10.2017
11:41:22
ну то есть блин, у тебя есть пост. У поста есть комментарии. У комментариев есть автор.
только опять же, там где ты комменты рисуешь - тебе пост не нужен. Тебе нужен только список комментов
а там где ты коммент рисуешь - тебе нужны только коммент и его автор
Д - декомпозиция

Arky
14.10.2017
11:43:49
Список коментов получаю через айди поста, авторов через комменты?)

Sergey
14.10.2017
11:46:15
так

Google

Sergey
14.10.2017
11:46:19
забудь о доктрине
представь что у тебя все объекты просто вечно в памяти лежат
ты достал пост
из массива просто
по ключу
как ты достанешь все комменты поста?
@funfn ну то есть тут - банально отношения между сущностями, не думаю что теория графов тут чего упростит

Arky
14.10.2017
11:48:18

Sergey
14.10.2017
11:48:34

Admin
ERROR: S client not available

Sergey
14.10.2017
11:48:39
ну то есть у тебя пост - библиотека. В библиотеке есть книги. У книги есть автор. Надо узнать автора книги - тебе надо сначала в библиотеке книгу взять и посмотреть кто автор. Ну или сделать запрос в библиотеку что бы там посмотрели если тебя сама книга не интересует

Егор
14.10.2017
11:50:08
Да, примерное понимание внутреннего устройства полезнее при обнаружении ошибок и с persistance ignorance не связано. А "правильное" использование Доктрины толком нигде в PHP-мире не освещается.

Sergey
14.10.2017
11:50:42
https://ocramius.github.io/doctrine-best-practices/#/

Arky
14.10.2017
11:50:52

Sergey
14.10.2017
11:51:20
так?

Arky
14.10.2017
11:51:35
Да

Google

Sergey
14.10.2017
11:51:42
а теперь попробуй предложи как они относятся друг к другу
что есть в посте, что есть в комменте?

Arky
14.10.2017
11:53:08
В посте есть автор который его оставил, у комментариев он тоже есть.

Sergey
14.10.2017
11:53:23
ну, продолжай рассуждать

Егор
14.10.2017
11:54:01
@fesor Вот этот доклад Окрамиуса и заставил меня как раз задуматься. А на практике как часто попадаются проекты с rich model? У меня небольшой опыт коммерческой разработки, Доктрину вообще в свободное время изучаю.

Sergey
14.10.2017
11:54:17
и ребятки с которыми работают тоже пытаются)
в целом все кто хоть немного понимает идеи ddd пытаются так жить
потому что если ты пишешь что-то сложнее блога - это окупается
да даже с блогом можно

Егор
14.10.2017
11:56:04
Понял, значит развивать нужно. Я тоже буду у нас пробовать такой подход продвигать.

Sergey
14.10.2017
11:56:16
https://gist.github.com/fesor/dda6c4c37a17509f18c2c9486323d997/revisions - вот я как-то накидывал примерчик
там по ревизиям - иди снизу вверх
что бы проследить развитие модели

Arky
14.10.2017
12:00:52
ну, продолжай рассуждать
Я связал Author и Post: ManyToMany. Думал что юзеры которые оставляют комментарии к посту, относятся к нему так же, как и юзер который оставил пост) Все же я сглупил, и это OneToMany. Нельзя выводить комментарии, через юзеров которые писали комментарии к этому посту) Значит надо выводит комментарии, которые относятся к посту, а авторов через сам комментарий.

Sergey
14.10.2017
12:01:29

Arky
14.10.2017
12:01:38
Один)

Sergey
14.10.2017
12:01:49
ну может и не один, но это точно никак к комментам не относится

Arky
14.10.2017
12:02:41
Просто я прировнял автора поста к авторам комментариев к нему :s

Sergey
14.10.2017
12:03:00
ну вот, разобрался?