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

Dinar
21.11.2017
15:46:31

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

Борис
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..

Vladislav
21.11.2017
16:50:30
или с генератором

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

Sergey
21.11.2017
16:51:00

Константин
21.11.2017
16:51:45

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

Arky
21.11.2017
17:09:29

Константин
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
Не должно быть нужно. :)

Sergey
21.11.2017
17:32:39

Егор
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

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 Вроде красивое решение, но походу это из какого-то екстеншина. Может кто подскажет каким боком это решаемо?