@prophp7

Страница 219 из 1387
Sergey
30.01.2017
19:09:56
и в целом проще взять готовый пакет какой (https://github.com/Ocramius/GeneratedHydrator)

и внутри репозитория гидрироать/дегидрировать сущности

da horsie
30.01.2017
19:11:59
любопытно

спасибо

Google
da horsie
30.01.2017
19:12:46
а чем плох мой способ?

Sergey
30.01.2017
19:13:06
1. тупой бойлерплейт 2. сущность теперь знает как она сохраняется в базе

da horsie
30.01.2017
19:13:20
не знает

и почему в базе?

ничего про базу нету

Sergey
30.01.2017
19:13:31
сущность <репозиторий> мэппер

da horsie
30.01.2017
19:13:52
она знает как себя превратить в дто и обратно

почему это плохо?

Aleh
30.01.2017
19:14:01
проблема только в бойлерплейте

Sergey
30.01.2017
19:14:05
ничего про базу нету
где ты будешь \DateTime приводить к тому видк, в котором она будет в базе?

или Money какой

Aleh
30.01.2017
19:14:10
и что это прям в публичной зоне

Sergey
30.01.2017
19:14:12
или еще чего

Google
Aleh
30.01.2017
19:14:25
гидрация обычно скрыта где-то глубоко

Aleh
30.01.2017
19:14:34
и нельзя просто взять и создать объект с определенным стейтом

Sergey
30.01.2017
19:14:43
это будет делать репозиторий
а кто будет отвечать за связи?

da horsie
30.01.2017
19:14:55
какие связи?

Sergey
30.01.2017
19:15:01
связи между объектами

Aleh
30.01.2017
19:15:02
между сущностями

Sergey
30.01.2017
19:15:04
static function fromSaved(array $state) { $me = new self: $me->myProp = $state['prop']; return $me; }

Богдан
30.01.2017
19:15:10
Такой вопрос Я не особо шарю в бд пока У меня есть таблица с приложениями, и таблица downloads, при нажатии на donwload я пишу в таблицу downloads id юзера, id приложения и время Мне нужно выводить количество скачиваний для каждого приложения К примеру скачиваний 1000000 всего. И как лучше сделать: писать в таблицу downloads и добавить колонку count_downloads в таблицу с приложениями, и ее тоже при скачивании на 1 увеличивать, или все таки получать для приложения через select count(*) from downloads, и как это будет если на странице 50 приложений, получается 50 запросов при каждом обновлении страницы И вот только что подумал - нет возможности, чтобы сервер бд сам заполнял колонку count_downloads по id приложения?

Sergey
30.01.2017
19:15:17
при таком подходе у тебя конструктор будет вызываться больше одного раза на жизненный цикл сущности

Sergey
30.01.2017
19:16:02
сущность становится.... просто DTO между приложенькой и базой

Aleh
30.01.2017
19:16:16
нуу хз, если ты там сайд-эффектишь, от сам виноват

а если нет, то потом стейт перетрется

так что)

Sergey
30.01.2017
19:16:32
я в конструкторе много чего могу делать

выставлять начальный стэйт сущности например

Aleh
30.01.2017
19:16:44
ну так потом перетрется ж

стейтом из базы

Google
Sergey
30.01.2017
19:17:01
ну тут уже бойлерплейт

Aleh
30.01.2017
19:17:13
да, это есть)

Sergey
30.01.2017
19:17:17
короч гидраторы

и не париться

Aleh
30.01.2017
19:17:27
одобряю

Богдан
30.01.2017
19:17:35
Я вообще вас не понимаю((

Sergey
30.01.2017
19:18:06
@nicecoder пиши процедурки/тригера. Ну или в коде тупо инкремент поля делай

последнее лучше

Богдан
30.01.2017
19:18:53
То есть это норм? 2 запроса будет Я просто почему то реально думал, что сервер может сам заполнять эту колонку для каждого приложения количеством скачиваний по id приложения

Aleh
30.01.2017
19:19:44
будет дергаться конструктор

Aleh
30.01.2017
19:19:56
при этом объект на самом деле не умирал

da horsie
30.01.2017
19:20:07
Aleh
30.01.2017
19:20:13
это пыхо-проблемы

da horsie
30.01.2017
19:20:16
это статик метод

Aleh
30.01.2017
19:20:20
объект умирает когда удаляется из базы

da horsie
30.01.2017
19:20:36
ах это

Aleh
30.01.2017
19:20:42
объект пользователя с точки зрения домена существует с момента создания до момента удаления

da horsie
30.01.2017
19:20:49
понял

Google
Aleh
30.01.2017
19:20:58
создание = конструктор, удаление = деструктор

на создание может вешаться какое-то хитрое поле

da horsie
30.01.2017
19:21:09
и как же гидратор эту проблему решит?

Aleh
30.01.2017
19:21:33
class A extends YourClass { public function __constructor() { } }

вуаля

Sergey
30.01.2017
19:21:41
вообще-то намного проще

Aleh
30.01.2017
19:21:57
ну там рефлексии всякие, но это лобовой вариант

Sergey
30.01.2017
19:22:32
$reflection = new \ReflectionClass(User::class); $user = $reflection->newInstanceWithoutConstructor();

Aleh
30.01.2017
19:23:03
это для слабаков

da horsie
30.01.2017
19:23:05
понял

Admin
ERROR: S client not available

Sergey
30.01.2017
19:23:21
я сломал твой способ

Aleh
30.01.2017
19:23:37
?

da horsie
30.01.2017
19:24:17
а в случае с гидратором кто отвечает за связи?

Sergey
30.01.2017
19:24:19
не ну понятно что доктринка тож сломается

а в случае с гидратором кто отвечает за связи?
посмотри на доктрину) там за это отвечает штука имплементящая Collection

ну то есть...

$this->friends->add($user);

а оно внутри уже трекает связи

Google
Aleh
30.01.2017
19:25:11
есть ж обратные

Sergey
30.01.2017
19:25:11
или если ты попросил - запомнит что надо в базу сохранить например

Aleh
30.01.2017
19:25:14
там тогда просто поле

Sergey
30.01.2017
19:25:23
ну вот тут уже unit of work

делает diff

ну то есть тут уже просто сэтится значение гидратором

или достается

а что с ним делать решают другие штуки

Aleh
30.01.2017
19:25:53
да, строит граф, потом по нему поиском в глубину строит последовательность и ее дергает

Sergey
30.01.2017
19:26:06
дерг дерг

da horsie
30.01.2017
19:26:31
? спасибо

Sergey
30.01.2017
19:26:32
@f3ath короч если ты вдруг вздумал написать свою ORM - это сложно и надолго

Aleh
30.01.2017
19:26:39
и не получится

протечет

Sergey
30.01.2017
19:26:58
протечет
ничего страшного

da horsie
30.01.2017
19:26:59
я хочу понять, почему не стоит писать свою ОРМ не пытаясь ее реально написать

Aleh
30.01.2017
19:27:21
ничего страшного
те, кто хотят написать обычно хотят не этого)

Sergey
30.01.2017
19:27:46
Aleh
30.01.2017
19:27:55
я хочу понять, почему не стоит писать свою ОРМ не пытаясь ее реально написать
так, для непросвященных(меня), а какие причины ее писать?

da horsie
30.01.2017
19:29:09
ну причина обычно такая "ууу, лень разбираться, нафигачу свой костыль"

Aleh
30.01.2017
19:29:13
ы

da horsie
30.01.2017
19:29:17
потом костыль оборачивается проблемами

хочется знать, какими именно

Страница 219 из 1387