@symfony_php

Страница 320 из 1418
Artur
07.10.2017
22:37:46
не, никаких геттеров
это запрос по сути к бд

Sergey
07.10.2017
22:37:57
это запрос по сути к бд
не надо мне запросов к бд

Artur
07.10.2017
22:38:09
просто класс и публичные проперти
я имею ввижду иметь метод по сборке обычного активрекордного обхекта

Sergey
07.10.2017
22:38:12
хотя я могу запилить ленивую инициализацию коллекций

Google
Sergey
07.10.2017
22:38:21
повторяю

пассивная запись

Artur
07.10.2017
22:38:45
ты про впринципе или про частный случай?

ты решаешь задачу экономии памяти?

Sergey
07.10.2017
22:40:12
основная цель - полностью разделить код для записи и чтения и избавиться от ненужных геттеров

экономия памяти, производительность и т.д. - это побочные эффекты

основная цель - разделить код и сделать работу с этим делом удобной

что бы я мог для простого списка сделать что-то типа SELECT u FROM users WHERE id=1 и закинуть сразу в json encode

Artur
07.10.2017
22:41:26
но это же.. лищние расходы

если потребуется и то и то

Sergey
07.10.2017
22:41:59
но это же.. лищние расходы
где ты их нашел то?

Google
Sergey
07.10.2017
22:42:14
если потребуется и то и то
то это будет значить что у тебя с кодом что-то не так

Artur
07.10.2017
22:42:20
ну для расстранички можно ограничится, условно, стдклассом с raw запроса )

Sergey
07.10.2017
22:42:34
ай короч забей

ты делаешь предположение что "код говно, как же быть", а у меня говно только в том что приходится геттеры держать

CQS короч

Artur
07.10.2017
22:43:27
основная цель - разделить код и сделать работу с этим делом удобной
разделять что-то на чтение и запист не вяжется с удобством для программиста..

Sergey
07.10.2017
22:43:43
разделять что-то на чтение и запист не вяжется с удобством для программиста..
ты просто видимо слишком примитивно это разделение видишь

перефразирую - "операции обработки данных" и "операции отображения этих данных"

у тебя они по хорошему никогда не пересекаются

Sergey
07.10.2017
22:44:49
ну и где тут "неудобство", где тут лишние расходы?

Artur
07.10.2017
22:44:54
но нода-то больше придётся обслуживать

Sergey
07.10.2017
22:45:03
как раз наоборот. По моим прикидкам кода существенно меньше выходит и код сам по себе упрощается

Artur
07.10.2017
22:45:33
ты имеешь ввиду экономия так как самогенерируемое а либа как бы не считается, если её зарелизить и она работает?

Artur
07.10.2017
22:45:56
ну вот я про то же

Sergey
07.10.2017
22:46:03
ну либа простая довольно

Artur
07.10.2017
22:46:08
так-то всё можно вынести )

Sergey
07.10.2017
22:46:10
я бы даже сказал примитивная

Google
Sergey
07.10.2017
22:46:25
а упрощение больше за счет более четкого разделения ответственности, это позволяет проще вносить изменения

и больш контроля

типа следующий уровень это уже полноценный CQRS

но с этим в php плохо

Artur
07.10.2017
22:46:53
если она позволила бы решать проблемы не с тупо маппингом а с чем-то большим, например с джоинами или комбайном на серию запросов - даже полезно было бы

т.е. денормализовывать данные

Sergey
07.10.2017
22:47:21
если она позволила бы решать проблемы не с тупо маппингом а с чем-то большим, например с джоинами или комбайном на серию запросов - даже полезно было бы
1. джойны поддерживаются 2. у меня есть batch подгрузка ресурсов что бы склеивать выборки на стороне приложения и не форсить связанность разных модулей

Artur
07.10.2017
22:47:25
как раз типичная страница "с контентом+джоины"

Sergey
07.10.2017
22:47:52
ну короч... я не понял что за проблемы с джойнами у тебя

я повторюсь - любой запрос который тебе может доктрина замэпить на сущности я смогу замэпить на dto

с джойнами, подзапросами, как хочешь

Artur
07.10.2017
22:49:08
наоборот же ДЕ

:)

Sergey
07.10.2017
22:49:14
но это не повод для разных контекстов создавать неявную связанность на уровне базы, для этой проблемы у меня как раз таки есть batch load данных

Artur
07.10.2017
22:49:21
или всётаки ->get

с гет даже круче

Sergey
07.10.2017
22:49:35
наоборот же ДЕ
у тебя результат любого sql запроса денормализованное представление данных. Далее ты просто их мэпишь

с гет даже круче
чем интересно

Artur
07.10.2017
22:49:47
если на этапе формирования запроса можно определить что можно на подуровнях подтягивать а не тупо копировать

Google
Sergey
07.10.2017
22:50:01
я не понимаю о каких проблемах ты говоришь... джойны какие-то приплел. у меня проблема - мне для UI нужен тупо стэйт, мне не нужна вся сущность

Artur
07.10.2017
22:52:22
условно $user->country->name $userDTO->countryDTO->name подразумевает нормализацию+ссылки. по сути геттер. но можно конечно и тяп ляп $userDTO->country_name денормализация с прописанными полями $userDTO->country['name'] денормализация "полная"

Sergey
07.10.2017
22:53:06
> $userDTO->countryDTO->name почему у тебя имя класса просочилось в название поле? с какого перепуга оно меняется?

Artur
07.10.2017
22:53:08
и в 1 и 3 варианте можно сделать только id+name

Sergey
07.10.2017
22:53:29
> $userDTO->country_name нет уж, пусть будет объект. Так расширяемее

Artur
07.10.2017
22:53:37
я бы сделал ->getCountry()

Sergey
07.10.2017
22:53:44
ЗАЧЕМ!

Admin
ERROR: S client not available

Sergey
07.10.2017
22:53:57
чем getCountry() отличается от ->country

и почему у тебя в country массив

Artur
07.10.2017
22:54:18
почему я туда добавил словло ДТО скорее

потому что там дто а не модель

Sergey
07.10.2017
22:54:32
дто не массив

это такой же класс с абсолютно такой же структурой полей (в моем случае)

Artur
07.10.2017
22:54:43
я бы сделал ->getCountry()
а это спорно да

дто не массив
я под массивом имел ввиду стдкласс

Sergey
07.10.2017
22:55:16
....никаких std классов

все с четко определенными типами

Google
Artur
07.10.2017
22:55:24
а последний пример был просто вариативность на тему

Sergey
07.10.2017
22:55:31
короч проехали

Artur
07.10.2017
22:55:38
так в данном случае я это и имел ввиду

Sergey
07.10.2017
22:55:53
хрень какая-то

нифига не понимаю что ты хочешь донести

пойду спать

Artur
07.10.2017
22:56:17
очевидно никто не будет делать UserDTO который стдкласс без описаний

->get просто чтобы показать что этих данных там может не быть(лезилоад)

Artur
07.10.2017
22:58:43
ооп же

Sergey
07.10.2017
22:58:45
да и зачем мне это показывать (прокси-классы ты можешь заюзать)

Artur
07.10.2017
22:58:46
расширяемость

Sergey
07.10.2017
22:59:02
ооп же
ООП как раз таки для того что бы СКРЫВАТЬ а не показывать там что-то о внутреннем устройстве

расширяемость
это не то место где надо расширять

геттеры - не нужны

в контексте DTO уж точно

Artur
07.10.2017
23:00:37
с точки зрения ооп - да не нужны

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

но если делать чёттипа $userQuery = UserQuery::where()->with(Country::class ); $userDTO = UserDAO::getDTO($query); $userDTO->name; $countryDTO = $userDTO->country; как-то так

осторожно жирная модель

Sergey
07.10.2017
23:03:33
насколько я понял ты пытаешься закрыть геттерами дырки с null-safety

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