
Alan
11.02.2018
12:19:31
все тки в примерах по срп почему то не говорят никогда про бизнес и задачи которые он ставит просто какой то класс Car и автор решает примерами srp

Andrey
11.02.2018
12:19:36

Sergey
11.02.2018
12:19:49
чтобы писать на пхп?

Sergey
11.02.2018
12:19:52

Google

Sergey
11.02.2018
12:19:53
это фиаско, братан..

Andrey
11.02.2018
12:20:02
Может быть

Sergey
11.02.2018
12:20:34
но если интересно как-нибудь обсудить вопросы тру ооп - милости просим) это всегда интересно)

Елнур
11.02.2018
12:21:14
Объектно-ориентированный подход:
Когда кода становится много, его нужно как-то разбить по процедурам. Когда процедур становится много, то их нужно как-то сгруппировать по обязанностям и разнести по модулям. Если несколько процедур и функций как-то связаны работой с одними и теми же данными, то их удобнее вместе с этими данными сгруппировать в объект.
Но если просто возьмёте груду кода и просто перенесёте процедуры в классы, как я говорил на итенсиве, то не станете сразу объектно-ориентированным программистом. Это другой подход к компоновке кода. Целый отдельный образ жизни и мыслей.
Настоящее ООП нацелено на разделение обязанностей и сокрытие информации.

Andrey
11.02.2018
12:21:17

Sergey
11.02.2018
12:22:09

Andrey
11.02.2018
12:22:37

Sergey
11.02.2018
12:22:50

Sergey
11.02.2018
12:23:01

Andrey
11.02.2018
12:23:01

Sergey
11.02.2018
12:23:28

Andrey
11.02.2018
12:23:36
4 краеугольных камня, хорошо

Sergey
11.02.2018
12:23:38

Google

Andrey
11.02.2018
12:24:17

Sergey
11.02.2018
12:24:25
4 краеугольных камня, хорошо
что если я скажу что наследование не нужно (ибо все о чем наследование покрывается полиморфизмом) а абстракция и инкапсуляция можно свести к information hiding?
ну и меня в php больше не язык а пользователи языка напрягают)
потому и сижу тут в чатике - глядишь кто-нибудь задумается о том что вся эта фигня с "4-мя краеугольными камнями" это бред наркомана и если все так почему никто не понимает эти камни

Andrey
11.02.2018
12:26:11
Я вот го собрался разбирать интересно мне
Ну симфони с пыхом пока кормит

Sergey
11.02.2018
12:26:29

Sergey
11.02.2018
12:26:32
как же ты без наследования там жить будешь?

Sergey
11.02.2018
12:26:42
структурный тайпинг и полиморфизм)

Andrey
11.02.2018
12:26:44
Я не крещеный справляюсь

Sergey
11.02.2018
12:27:23
Я не крещеный справляюсь
ну ты просто задумайся и дай определение принципу наследования (и чем это отличается от полиморфизма_
ну и еше - все это названное было ДО ооп
сильно так до

Andrey
11.02.2018
12:28:32
Так все же что с transchoice есть кто то, кто тупо работает не прибегая к высоким материям мира ООП?

Sergey
11.02.2018
12:29:21
с i18n наверное тебе тут не помогут

Sergey
11.02.2018
12:29:50
ну я пока даже вопроса конкретного не вижу
пока могу только в доки послать
может быть чуточку лучше

Google


Andrey
11.02.2018
12:43:57
Жаль, спасибо. Интересная дискуссия, я поддерживаю использую и пропагандирую саморазвитие, иногда тоже страдаю задродством, в хорошем смысле слова. Но обычно на свой проект есть 2 - 3 часа на выходных, когда ребенок спит поэтому, тратить их на холивары о сферичечких конях нет времени да и желания. Главное во всех этих подходах понимать и оценивать, все риски и усложнения которые вызовут использование той или иной философии. Тупое следование SOLID приведет к краху проекта раньше чем проект может себе позволить. Поэтому очень часто проекты написаные на коленке работают лучше и решают свою задачу чем те которые потерялись в абстракциях. Мы говорим о высоких материях и они очень редко пересекаются с бизнессом. И потратить на разработку 100 лишних часов сегодня и избежать потери 1000 часов в будущем эторазные временные рамки для заказчика. И он выберет в 99% последнее. Ведь если разобраться то скрам тоже шлак так как приводит к быстрым релизам которые только увеличивают технический долг.
Резюмируя все выше изложенное, во всем нужно разбираться, тупое следование чьим либо принципам это путь в никуда.


Sergey
11.02.2018
12:44:53
мы как раз таки и акцентируем внимание на тупое следование документации например


Andrey
11.02.2018
12:45:14
Не важно дядя боб, фабиен или коллеги в чате :)
Всем всем спасибо за сим прощаюсь.

Sergey
11.02.2018
13:12:22
пока резюмирую список
- херовая дока у самой доктрины
- дока симфони ориентированная на простые getting started сценарии использования
- data driven подход к декомпозиции
- боязнь джойнов накладывающая отпечаток на предыдущий пункт
- попытки пихать в сущности логику приводят к нарушению SRP в силу предыдущих двух пунктов
- желание заинджектить сервисы
- "сложнее тестить" которое проистикает из веры что интеграционные тесты лучше изолированных (моки зло) или непонимание разницы
- надо думать (а думать больно)
- поиск и фильтрация, когда выборки в разы сложнее операций записи

Sergey
11.02.2018
13:14:44
а еще не всегда весь доменный слой манагается доктриной

Sergey
11.02.2018
13:15:00
но как это влияет на логику в сущностях?

Sergey
11.02.2018
13:17:17
ну к примеру ордер может манагаться доктриной, а транзакции привязанные к этому ордеру приходят например из монги

Sergey
11.02.2018
13:18:08
а зачем ордеру транзакции?

Sergey
11.02.2018
13:18:18
и уже не выйдет сделать
$order->pay(100);

Sergey
11.02.2018
13:18:23
хм...
мне кажется что ордер должен генерить инвойс а не транзакцию
а уже инвойс будет оплачен транзакцией
вдруг у тебя наличкой или карточкой
или внутренней валютой или можно вообще выбирать чем платить (хоть натурой)
ну и еще момент - как ты относишься к ивентам?)
просто как по мне платежки это отдельный контекст и он никак не должен пересекаться с непосредственно заказом

Google

Sergey
11.02.2018
13:21:14
инвойс может знать айдишку заказа и стоимость, транзакция знает айдишку инвойса
когда транзакция прошла - мы можем поменять статус заказа

Andrey
11.02.2018
13:24:01
Поддерживаю, только ивент должен быть перед созданием invocie и после.

Sergey
11.02.2018
13:30:19
и мы видимо про разные ивенты
я про доменные ивенты

Admin
ERROR: S client not available

Sergey
11.02.2018
13:30:41
которые чуть отличаются

Andrey
11.02.2018
13:32:16
если я не ошибаюсь это event на уровне микросервисов?
Правильно?
типо очередей сообщений для конкретного микросервиса.

Sergey
11.02.2018
13:34:50
какие к черту микросервисы?
нет, погугли про domain events если интересно
в этом ключе ивент это факт - что-то что уже произошло и никуда не денется
ты не можешь никак повлиять на это
только новой какой-то операцией которая компенсирует предыдущую (вроде статусов pending + paid)

Andrey
11.02.2018
13:38:03
А ок не с этим не работал по гуглю.

Sergey
11.02.2018
13:54:46
микросервисы еще откуда-то родил

Andrew
11.02.2018
14:40:24
1900 сообщений за 1.5 дня, я все прочитал)
даже больше чем в ООП и PHP)

Google

Andrew
11.02.2018
14:41:57
мне нравиться, у вас тут
поделюсь http://www.cs.usfca.edu/~galles/visualization/Algorithms.html
кулеры я починил, хотя они уже такими шустрыми как с завода никогда не будут(
Подскажите пожалуйста, как сделать поле уникальным и при этом nullable?
Если чистый SQL будет примерно:
CREATE UNIQUE INDEX UNIQ_57698A6A5E237E06 ON user (slug)
WHERE user (slug) IS NOT NULL;
* @ORM\Column(type="string", length=100, unique=true, nullable=true)
Однако PgSQL ругаеться, что уже есть записи с NULL

Sergey
11.02.2018
15:26:40
из документации к постгре по интексам:
> Null values are not considered equal.
так что надо смотреть где именно у тебя ругается, там уже как минимум 2-3 варианта

Andrew
11.02.2018
15:30:05
хорошо, буду искать, спасибо.


Владимир
11.02.2018
16:46:14
Считайте меня извращенцем, но учитывая, что у меня есть 3 клиента у моей API (браузерная админка, Android и IOS, при чем на каждый вид мобилки создается сразу два приложения, возможно разными разработчиками) и учитывая, что Upload через GraphQL создает необходимость выводить стандарт для всех платформ, в котором будет указано как GrapQL запрос сочетается вместе с файлами (блоб или мультипарт - без разницы), я решил не делать Upload через GrapQL вовсе. Буду открыть параллельно GrapQL еще один restfull Endpoint, с которым ни у кого не возникает вопросов и давать туда слать файлы. В ответ будут даваться имя скаченного файла или его идентификатор. Этот идентификатор я и буду уже сувать в GrapQL запрос
Получается двух этапный запрос на сервер. Но в результате я имею бонус - работаю со скачанным файлом в мутациях как с полем данных, объявленным в схеме. А главеное - мне в разы меньше нужно согласований проводить с разработчиками клиентов.


Sergey
11.02.2018
16:47:16
Считайте меня извращенцем, но учитывая, что у меня есть 3 клиента у моей API (браузерная админка, Android и IOS, при чем на каждый вид мобилки создается сразу два приложения, возможно разными разработчиками) и учитывая, что Upload через GraphQL создает необходимость выводить стандарт для всех платформ, в котором будет указано как GrapQL запрос сочетается вместе с файлами (блоб или мультипарт - без разницы), я решил не делать Upload через GrapQL вовсе. Буду открыть параллельно GrapQL еще один restfull Endpoint, с которым ни у кого не возникает вопросов и давать туда слать файлы. В ответ будут даваться имя скаченного файла или его идентификатор. Этот идентификатор я и буду уже сувать в GrapQL запрос
Получается двух этапный запрос на сервер. Но в результате я имею бонус - работаю со скачанным файлом в мутациях как с полем данных, объявленным в схеме. А главеное - мне в разы меньше нужно согласований проводить с разработчиками клиентов.
все так


Владимир
11.02.2018
19:50:47
http://symfony.com/doc/4.0/bundles/SensioFrameworkExtraBundle/annotations/routing.html
WARNING: You are browsing the documentation for version 4.0 which is not maintained anymore. If some of your projects are still using this version, consider upgrading.
Я что-то проспал? 4-я версия только появиться успела же!

Николай
11.02.2018
20:18:53
SensioFrameworkExtraBundle
актуальная 5-ая версия бандла

Владимир
11.02.2018
20:19:48
А, так это не версия симфони? ))

Vladislav
11.02.2018
20:26:52
не)

Dinar
12.02.2018
09:05:45
@fes0r В общем, посовещались с командой и перешли на твой хук cs-fixer. :D Спасибо большое ;)

Gaiaz Iusipov
12.02.2018
09:44:24
напомните ссылку на хук плиз) этот тот который фиксит или не дает пушить без фикса?

Dinar
12.02.2018
09:48:01
Который фиксит и сразу добавляет

Bohdan
12.02.2018
09:48:34
а скинь его еще раз, пожалуйста, сохраню себе куда-то