@symfony_php

Страница 335 из 1418
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
"Не используйте Else" - шок)
да, early return - хорошая практика

ну и там ссылки полезные есть по всей статье

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

Alexandr
14.10.2017
10:42:14
"2 атрибута на класс", смешно)

created, updated, ... Всё, больше нельзя)

Mikhail
14.10.2017
10:43:19
А где например?
сходу не вспомню, но что-то старое, чуть не у Кнута

Sergey
14.10.2017
10:44:04
в других местах написано что должен быть один return :)
хз, во всяких там чистых/совершенных кодах говорится только про то что не стоит юзать else

если сделать еще в купе с CQS и делать все важные методы void - то это решает твою проблему с return)

created, updated, ... Всё, больше нельзя)
заворачиваешь это в какую-нибудь meta и у тебя есть еще один атрибут

в этом и идея ограничения - заставить тебя хоть немного думать как код дробить

понятно что в реальной жизни ты хотя бы 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
Графы потому что объекты как вершины, связи как рёбра, а в БД - списки смежности. В доктрине например топологическая сортировка используется.
ну давай пофилосовствуем.... доктрина - она про persistence ignorance. То есть про то как построить твою модель отдельно от персистенс лэйер, что бы вот вся эта теория графов и как в каком порядке чего коммитить - оно само разрулит и тебе это знать не надо. Тебе надо выстроить отношения объектов согласно твоей модели

и как по мне - проблема с введением в доктрину в том что они воспринимают ее больше как "ну таблички на объекты мэпить", а оно ж наоборот

то о чем ты говоришь будет полезно если ты решишь свой UoW запилить для реляционной базы

но в понимании "как пользоваться доктриной" это не добавит как по мне

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

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-мире не освещается.

Arky
14.10.2017
11:50:52
да, но это авторы комментариев а не авторы постов
А как определить автора поста от автора комментария?(

Sergey
14.10.2017
11:51:20
А как определить автора поста от автора комментария?(
у тебя есть сущность Author, есть Post и Comment

так?

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. Нельзя выводить комментарии, через юзеров которые писали комментарии к этому посту) Значит надо выводит комментарии, которые относятся к посту, а авторов через сам комментарий.

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
ну вот, разобрался?

Страница 335 из 1418