@symfony_php

Страница 287 из 1418
Sergey
10.09.2017
21:25:00
да, я рассматриваю весь этот чейн как цепочку адаптеров между http и приложением, мне так проще

но я все-таки не придумал как разрулить когда тебе надо что-то записать и потом выплюнуть респонс без контроллера

Aleserche
11.09.2017
04:29:33
кто мне скажет, есть в доке такой момент http://symfony.com/doc/current/doctrine/associations.html Relationships and Proxy Classes Решил посмотреть у себя, а правда ли там прокси. И нифига

а не, норм. Proxies\__CG__\AppBundle\Entity\Report

Google
Bohdan
11.09.2017
12:17:33
кто как решает вопрос data migrations? через метод postUp обычных миграций? или через обычные команды?

Artemiy
11.09.2017
12:26:15
Смотря какая задача

К примеру когда создается юзеров таблица, надо сделать сразу postUp (админа добавить например). А если добавить какие-то левые данные генерю новую миграцию.

Dmitriy
11.09.2017
12:30:37
кто как шифрует данные в куках?

Gleb
11.09.2017
12:31:02
данные в куках я шифрую в сессии)

Dmitriy
11.09.2017
12:31:33
а если данные надо долго держать?

Gleb
11.09.2017
12:32:09
вешать сессионную куку с большим сроком хранения?

Dmitriy
11.09.2017
12:46:16
Gleb
11.09.2017
12:46:53
Хранить кучу сессий?
если их не миллион с мегабайтными данными, то почему бы и нет.

Dmitriy
11.09.2017
12:48:25
зачем мне хранить кучу всех сессий для маленькой строки, которую используют 20% пользователей?

Gleb
11.09.2017
12:49:54
а) ты и так хранишь их сессии, и у части пользователей к этим данным добавляется маленькая строка б) ты хранишь сессии только тех 20% пользователей, где будет только маленькая строка.

Google
Gleb
11.09.2017
12:51:51
но если зайти с другой стороны, то вопрос скорее в том, насколько эти данные критичны. Что будет, если их уведут и расшифруют?

Dmitriy
11.09.2017
12:53:27
да ничего особо страшного

Например в симфони remember me шифруется в куках

через base64_encode

Gleb
11.09.2017
12:54:25
тогда почему их не хранить в открытом виде?) но если хочется зашифровать -- openssl_encrypt() / openssl_decrypt()

Dmitriy
11.09.2017
13:11:03
Угу сделал с их помощью

Bohdan
11.09.2017
15:11:12
@fesor призываю на обсуждение)

Sergey
11.09.2017
15:24:45
перенос данных - как правило в миграциях, но у меня например были ситуации когда нужно было например данные вытянуть откуда-то по хитрому и от окружения сильно зависело, и потому делали одноразовую команду

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

Bohdan
11.09.2017
15:38:35
окей, спасибо где-то так и думал

Sergey
11.09.2017
16:40:15
Sergey
11.09.2017
17:06:07
это как? типа для выборки один набор сервисов, а для вставки другой?
ну я ж потом уже прикинул что у тебя примерно одинаково будет

хотя с другой стороны - для апдейта тебе может часто даже не нужен будет репозиторий)

Антон
12.09.2017
05:05:32
@fes0r и зачем так сильно заморачиваться даже если будет одна не нужная зависимость?

Sergey
12.09.2017
08:21:03
привет, подскажите плиз у кого как реализовано, вот есть трейт доменных событий - метод releaseEvents() вызывается после flush(). Как уменьшить кол-во мест с этим кодом?

Sergey
12.09.2017
08:28:44
привет, подскажите плиз у кого как реализовано, вот есть трейт доменных событий - метод releaseEvents() вызывается после flush(). Как уменьшить кол-во мест с этим кодом?
1. сделать один листенер который по postflush будет доставать ивенты из сущностей и кидать их в диспетчер событий 2. забить на трейт и сделать класс со статикой (EventStore::remember и EventStore::release) и опять же листенер по postflush

я юзаю первый вариант если что, второй мне нравится все больше и больше

Sergey
12.09.2017
08:31:01
я юзаю первый вариант если что, второй мне нравится все больше и больше
Можно по подробнее про второй вариант, не совсем понимаю

Google
Sergey
12.09.2017
08:33:06
ну вместо трейта хранить ивенты в централизоварнном хранилище, по сути - глобальная точка доступа

EventStore::remember(UserRegisteredEvent::occure($this->id, $this->profile));

Alexey
12.09.2017
10:31:23
В доктрине есть список запрещенных имен, которые нельзя использовать в qb алиасах?

Sergey
12.09.2017
10:37:35
проверь)

Alexey
12.09.2017
10:38:31
проверь)
Ну теперь придется)

Alan
12.09.2017
10:44:41
ну она никак об этом не скажет, скажет фатал при запросе)

as count нельзя)

Alexey
12.09.2017
10:49:40
Просто я использую зарезервированное имя mysql group для qb. А как заэкранировать что-то не могу найти

Alan
12.09.2017
10:58:13
group попробуй



Alexey
12.09.2017
10:59:36
пробовал. \`\` \`\` и \` \` и {}

Нифига

Alan
12.09.2017
11:00:16
скоре всего никак я недавно искал про зарезервированные слова ниче не нашел у доктрины, у хибернейта в яве есть автоэкранирование тут вроде нету

таблички можно апострофом экранировать так

в аннотации доктрины

Sergey
12.09.2017
12:00:01
привет, вопрос куды положить такой код, вот в репозиториях есть методы типа findByField и часто в слоях выше приходится использовать этот метод. Если он возвращает null нужно кидать что-то типа NotFoundHttpException. И вот такой код напрашивается на дублирование, корректно ли сделать в репах методы типа getByField, которые будут либо возвращать код либо кидать исключение? Или как лучше поступить?

Sergey
12.09.2017
12:02:27
в идеале у тебя репозиторий всегда должен либо что-то возвращать либо кидать исключение

Антон
12.09.2017
12:03:25
null репозиторий может возвращать?

если не найдены результаты

Google
Sergey
12.09.2017
12:03:51
можно все. но вообще не должен

нежелательно но можно. назовем это так

Антон
12.09.2017
12:04:05
а где про это почитать?

Sergey
12.09.2017
12:04:27
ну погугли repository pattern return null

Антон
12.09.2017
12:04:29
Exception вот не понимаю почему там должен быть. ведь это нормальное поведение что нет найденных результатов

Sergey
12.09.2017
12:04:43
в идеале у тебя репозиторий всегда должен либо что-то возвращать либо кидать исключение
А типы исключений как в таком случае лучше организовать? Просто кастомное исключение типа RepositotyNotFoundException ?

Michael
12.09.2017
12:05:17
Почему тогда стандартный findOneBy не падает с exception-ом?

Sergey
12.09.2017
12:05:37
Exception вот не понимаю почему там должен быть. ведь это нормальное поведение что нет найденных результатов
на код надо смотреть не с позиции "вот я смотрю на нутро репозитория" а с позиции "вот я смторю как это используется и тут null не катит

Sergey
12.09.2017
12:05:47
find - это либо нашло, либо исключение get - это либо нашло, либо нулл такое именование

Sergey
12.09.2017
12:06:06
то есть банально если у тебя есть метод getSomething и везде где оно юзается "низя" что бы был null - то логично что бы твоей метод этого объекта соответствовал этому

Sergey
12.09.2017
12:06:43
ой не, я пошел работать

Sergey
12.09.2017
12:06:43
нежели выдумывать какие-то там конвенции

Антон
12.09.2017
12:07:10
что то найду описания что нельзя null и обязано Exception

есть ссылка?

Sergey
12.09.2017
12:07:19
Почему тогда стандартный findOneBy не падает с exception-ом?
потому что он стандартный. Я к примеру "стандартные" доктриновские репки в свои заворачиваю с моими чистыми интерфейсами

что то найду описания что нельзя null и обязано Exception
да делай что хочешь, просто повторюсь

одна из основныз ошибок при проектировании интерфейсов - проектирование в отрыве от того как они юзаются

Антон
12.09.2017
12:08:04
чувак ты чего обижаешься? я тебе не противоречил, я ищу инфу

Sergey
12.09.2017
12:08:33
я не обижаюсь, я к тому что есть две разные интерпритации репозиториев, есть DDD-ные и для persistence

Google
Michael
12.09.2017
12:08:36
тогда получается путаница: я использую стандартные методы для простых выборок и не ожидаю эксепшн, а реализуя свои методы почему то эксепшны должны быть

Sergey
12.09.2017
12:08:39
доктриновские - это последнее

тогда получается путаница: я использую стандартные методы для простых выборок и не ожидаю эксепшн, а реализуя свои методы почему то эксепшны должны быть
мысль которую я хочу донести - это то что плевать что у тебя внутри объекта, ты должен смотреть как методы твои юзаются и что от них хотят

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

если не все - лучше сделать 2 метода

идея - уменьшение количества if-ов в коде

Антон
12.09.2017
12:10:00
ну по логике вещей ожидают коллекцию данных? она не найдена, а тебе в ответ «извини, что то пошло не так». Или я эксепшены неверно понима/

Sergey
12.09.2017
12:10:23
нет, стой

если ничего не найдено у тебя пустая коллекция но никак не null

Dmitriy
12.09.2017
12:10:40
у тебя пустая коллекция

Антон
12.09.2017
12:10:50
так, уже лучше

Sergey
12.09.2017
12:10:50
я говорю о случаях когда ты одну сущность ищешь

Dmitriy
12.09.2017
12:10:55
речь про find объекта

Антон
12.09.2017
12:11:02
понял

Michael
12.09.2017
12:11:30
ну по моему тогда лучше префикс get использовать. всё таки get - получить, т.е. ты уверен, что такие данные есть, и исключение - это как раз обратная ситуация а find - найти, т.е. ты не уверен, что такие данные есть, а просто ищешь

Sergey
12.09.2017
12:11:32
но идея все та же - проектируй сверху вниз а не снизу вверх, не подгоняй код под репозиторий, подгоняй репозиторий под код

Антон
12.09.2017
12:12:13
>find - найти, т.е. ты не уверен, что такие данные есть, а просто ищешь следуя здравой логике тоже так кажется

Sergey
12.09.2017
12:12:24
если у тебя 10 мест где ты ищешь и во всех 10-ти местах ты кидаешь итсключение - логично что у тебя дублирование и надо вынести его в репозиторий

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