@symfony_php

Страница 409 из 1418
Andrey
21.11.2017
15:46:27
назлоупотреблял в интерфейсах ими, теперь малёха поперек горла стоит

Andrey
21.11.2017
15:46:54
iterator фатал выбьет на массив count на итератор

хотя, count работает с Countable

Google
Andrew
21.11.2017
15:47:45
iterator_to_array если Iterable и count?

Dinar
21.11.2017
15:47:47
+

Алексей
21.11.2017
15:49:17
iterator фатал выбьет на массив count на итератор
ну сделай обертку с тайп чеком

Борис
21.11.2017
15:49:21
Всем привет. Кто-нибудь заходил stepInto дебаггером в phpunit mock ? Там ошибка в IDEA (для других ide таже фигня будет) Remote file path '/3' is not mapped to any file path in project. Дело в том, что phpunit как-то хитро создает моки. Но мне говорили, что можно туда все-таки как-то попасть. Есть идеи?

Andrey
21.11.2017
15:49:23
это плодить instanceof-ы, либо выносить в либку. В принципе, лады

Алексей
21.11.2017
15:50:22
Если Traversable - iterator_count Иначе count

УУУХХХ наплодил

Andrey
21.11.2017
15:51:35
return $items instanceof Iterator ? iterator_count($items) : count($items);

либо это в либу, либо везде писать

Алексей
21.11.2017
15:52:05
забей. Сделай глобал фанкшн

function ucount($countable)

Dinar
21.11.2017
15:52:37
Countable заимплементь

Google
Алексей
21.11.2017
15:53:05
Andrey
21.11.2017
15:53:41
смысл был в том, чтобы оставить iterable, и не боятся, что не покрыт кейс. Я могу и Collection доктрины вставить, не хотел на него полагатся

Алексей
21.11.2017
15:54:02
Andrey
21.11.2017
15:54:27
> В принципе, лады

Алексей
21.11.2017
15:54:58
еще вопрос про кривой шторм. Кто то сталкивался что шторм не знает core ф-ций?



он тупо забыл про них

Artemiy
21.11.2017
16:00:30
У меня после обновления так. Пока не решал

Andrew
21.11.2017
16:00:55
как-то было, invalidate caches + restart помог

Bohdan
21.11.2017
16:08:50
у меня вообще все забывает - кор функции, классы мои и кор и тд только invalidate + restart после каждого ребута

Алексей
21.11.2017
16:10:07
вангую какой-то плагин виноват

Константин
21.11.2017
16:47:06
Уместно в репозитории держать методы persist(), flush и clear ?

Sergey
21.11.2017
16:47:19
только скрытые

под save

clear у репоса и так есть

Константин
21.11.2017
16:47:47
А почему скрытые?

Sergey
21.11.2017
16:48:00
ну типа не быть привязанным к базе и все такое

Константин
21.11.2017
16:48:09
ммм

Sergey
21.11.2017
16:48:18
у тебя ж не будет интерфейса репоса с методами persist/flush

Константин
21.11.2017
16:48:37
да, наверное. А clear будет?)

Google
Sergey
21.11.2017
16:48:49
clear опасная штука вообще)

Константин
21.11.2017
16:49:15
Мне в команде надо пройтись по всей таблице и что-то сделать)

Без клира я по по памяти упаду

Вопрос в том, достаточно ли мне должно быть только репозитория для таких операций. Или в зависимостях должен быть репозиторий + entity manager для flush, clear, etc..

Константин
21.11.2017
16:50:59
С тем же успехом можно и нативный sql писать. Зачем вообще репозитории создавать?)

Sergey
21.11.2017
16:51:00
Вопрос в том, достаточно ли мне должно быть только репозитория для таких операций. Или в зависимостях должен быть репозиторий + entity manager для flush, clear, etc..
от ситуации зависит. если это атомарная какая-то транзакция над одним обьектом, то save у репоса вызвать окей если чет сложнее то EM

Sergey
21.11.2017
16:52:27
да

clear лучше лишний раз не дергать, и если дергаешь то быть уверенным что у тебя нигде нет референсов на сущности

иначе неловкое движение и следующий flush у тебя в базе начнет дестрой делать

Константин
21.11.2017
16:53:30
хм. Не сталкивался с таким

Sergey
21.11.2017
16:53:58
а еще веселее если у тебя есть скажем сущность юзер, которая знает о order

и ты делаешь orderRepository->clear()

и потом flush

Константин
21.11.2017
16:55:00
Хочешь сказать от пользователя отвалятся товары?

Sergey
21.11.2017
16:56:50
зависит от того как каскады настроены

Andrey
21.11.2017
16:56:51
не должна. Просто будет при флаше перепроверять наличие в базе

а, ну и при вызове UOW->getDocState($document, self::NEW) будет считать её новой, и каскадно пытатся сохранить

Google
Andrey
21.11.2017
16:57:45
или тупо упадёт, мол нельзя каскад

много боли это принесло

Sergey
21.11.2017
16:57:57
да, дестрой в общем говоря

это поведение сложно контролировать

Andrey
21.11.2017
16:59:01
было непонятно раньше (да и сейчас), почему доктрина так себе завела поведение, мол в базу перепроверять не пойдёт в 90% случаев наличие

Sergey
21.11.2017
17:00:57
я до сих пор не могу уверенно сказать что произойдет в том или ином случае

поэтому такое стараюсь избегать в коде

clear делаем только в конце процессинга сообщения у демона например

Admin
ERROR: S client not available

Sergey
21.11.2017
17:01:41
хотя окрамиус говорил что clear нужно после каждой бизнес транзакции делать

Andrey
21.11.2017
17:03:40
https://github.com/doctrine/doctrine2/issues/6116

& https://github.com/doctrine/doctrine2/pull/6198#discussion_r93874559

Константин
21.11.2017
17:23:31
Кто как получает приватный сервис в тестах?

BioBodya
21.11.2017
17:24:01
рефлексия, не?

Константин
21.11.2017
17:24:24
о_О

https://github.com/symfony/symfony-docs/issues/8097

Может кто-то иначе извращается)

Dinar
21.11.2017
17:25:57
Так в тестах ты должен делать new

BioBodya
21.11.2017
17:25:57
Я немного про другое подумал :) Думал тебе доступ к приватному свойству (зависимости) нужно получить )

Google
Dinar
21.11.2017
17:26:23
Не должно быть нужно. :)

Так в тестах ты должен делать new
Если юнит тесты. Иначе приватные ты и не должен тестировать.

Егор
21.11.2017
17:35:39
Константин, я в config_test.yml добавлял public: true для нужного сервиса: services: AppBundle\Service\UserManager: autowire: true public: true

Константин
21.11.2017
17:37:44
Плохой вариант, если сервис зависит от локальных биндигов придётся дублировать логику

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

Arky
21.11.2017
17:57:56
да)
Залил на гитхаб кстати) https://github.com/Arky9782/chat

Sergey
21.11.2017
18:05:17
можешь еще попробовать приемочные тесты пописать)

полезно бывает)

+ в гитхабе сделай себе таски. будет удобнее трекать что осталось сделать)

закинул тебе ишусов

во, 7 ишусов, думаю тебе пока хватит)

$iD
21.11.2017
18:30:40
о, первый RC на 4ку

Arky
21.11.2017
18:33:44
во, 7 ишусов, думаю тебе пока хватит)
Спасибо огромное, буду разбираться)

Daniel
22.11.2017
07:45:20
Ребята. Вопрос по тестам.

Вот у меня есть QueryBuilder для Odata, который превращает такое: new OrQuery( new Lt('Нетто', new Integer('6000')), new Gt('Брутто', new Integer('3000')), new AndQuery( new Eq('НоменклатурнаяГруппа', new Text('Услуги')), new Eq('Description', new Text('Перевозки')) ) ) В такое: (Нетто lt 6000 or Брутто gt 3000 or (НоменклатурнаяГруппа eq 'Услуги' and Description eq 'Перевозки'))

Могу ли я в тесте OrQuery\AndQuery использовать Lt, Gt, Eq :(

Да и Text, Integer

Моки не получится, ибо там блин завязка на __toString, что наверное плохо

/** * Class AbstractQuery */ abstract class AbstractQuery implements QueryInterface { /** @return string */ abstract public function formalize(); /** @return string */ public function __toString() { return (string) $this->formalize(); } }

Вадим
22.11.2017
07:51:46
https://stackoverflow.com/a/16721368/1060421 Вроде красивое решение, но походу это из какого-то екстеншина. Может кто подскажет каким боком это решаемо?

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