
Sergey
04.12.2017
20:41:18

Константин
04.12.2017
20:42:01
до ес я пока не дошел, оч интересно, но потом

Sergey
04.12.2017
20:42:38
по поводу бронирования/резервации товаров - пожалуй тут лучше самому

Google

Ruslan
04.12.2017
20:42:42
Хотя как оплачивать тоже проблема (учитывая 53-ФЗ), или счет или сервис по картам

Sergey
04.12.2017
20:42:43
можешь symfony/lock заюзать)

Ruslan
04.12.2017
20:43:45
если счет - то ручками заносить на баланс. если карты - то авт. транзакции

Константин
04.12.2017
20:48:09
по поводу бронирования/резервации товаров - пожалуй тут лучше самому
Я там что-то родил, вроде даже работает. Уже даже забыл как. Но как то выглядит это всё не айс.
Например есть кейс - найти дефицит товаров. Это калькуляция из: 1) требуемых товаров по открытым заказам; 2) Зарезервированным; 3) Наличие на складе; 4) Ожидающихся к поставке.
Я это решил пока в лоб вот таким "оптимизированным" запросом https://github.com/automagistre/automagistre/blob/master/src/Manager/PartManager.php
Как эту историю со складом архитектурно разложить не могу найти решения

Sergey
04.12.2017
20:49:39
array_filter(explode(',', $item['orders_id']), 'strlen')
можно заменить на array_filter(explode())

Константин
04.12.2017
20:50:24
Так хочу проще, но не знаю как)
Как говорил Калашников - Сделать сложно, проще чем сделать просто)

Sergey
04.12.2017
20:51:40
чёт не понял
если ты не передаш fn вторым аргументом, он по дефолту будет скипать все значения которые посчитает пустыми

Константин
04.12.2017
20:52:34
хм

Google

Sergey
04.12.2017
20:52:49
единственный минус - значения типа 0 оно тоже может за пустоту посчитать.
а strlen пропустит
ну это из нюансов

Константин
04.12.2017
20:53:22
Там id, там 0 не будет
Я возможно там вообще зря делаю getReference. Этот объект потом только для генерации ссылки используется

Sergey
04.12.2017
20:54:42
https://github.com/automagistre/automagistre/blob/master/src/Manager/PartManager.php#L88-L92
оно ж ничего не делает

Константин
04.12.2017
20:55:40
Возможно это попытка сократить 100500 запросов lazy load'a, хз, я уже всё забыл)

Sergey
04.12.2017
20:55:45
+ непонятно зачем тебе потом в php что-то делать, запихнул бы это в еще один сабселект)))

Константин
04.12.2017
20:56:30

Sergey
04.12.2017
20:56:43
ну я так понял что да, ты юзаешь identity map как кэш
и что бы упростить гидрацию
аля eager лоад
но это ж не резервирование - это похоже на репорт дицицитных запчастей

Константин
04.12.2017
20:57:30
да, он и есть

Sergey
04.12.2017
20:58:26
почему ж он менеджером зовется) если это репорт

Константин
04.12.2017
20:59:00
Репорт - звучит уже как результат, а не то что его ищет
Я не понимаю как выглядит правильная реазация склада и резервирования. Правильная в том плане, чтобы вот такие задачи как поиск дефицита решались более читаемо и поддерживаемо

Sergey
04.12.2017
21:03:55
https://en.wikipedia.org/wiki/Conway%27s_law

Google

Константин
04.12.2017
21:06:55
Как оно устроено в реальной жизни мне примерно понятно, а вот как отразить в коде не всегда понятно)
Ещё доставляет хлопот тот факт, что в автосервисе привыкли работать костыльно, подстраиваясь под возможности первой реализации приложения
Или просто используют инструменты не по назначению, просто потому что им так удобнее
@fes0r о, вот вопрос. Как ты считаешь, как лучше реализовывать статус заказа?
Вводить поле статус и выставлять значения по событиям, или обсчитывать реалтайм?
Второй вариант конечно затруднителен в плане поиска

Sergey
04.12.2017
21:11:43

Константин
04.12.2017
21:11:54
например?)

Max
04.12.2017
21:12:16

Константин
04.12.2017
21:12:36

Sergey
04.12.2017
21:13:54
например?)
я люблю обмазываться доменными событиями и разделять все и вся
а еще - я не люблю менеджеры и люблю ООП

Константин
04.12.2017
21:14:24
Заказ без позиций - новый заказ
Заказ в позициях которого есть заказанные запчасти - Ожидает доставки запчастей
Все позиции в наличии, но нет даты приезда автомобиля - Ожидает записи клиента
и тд

Sergey
04.12.2017
21:14:42
саги...
обмазаться ими

Константин
04.12.2017
21:16:32

Sergey
04.12.2017
21:17:04

Константин
04.12.2017
21:17:09
Без примеров иногда как без мозгов, к сожалению

Sergey
04.12.2017
21:17:10
это ж надо придумывать задачи

Google

Alan
04.12.2017
21:17:14
а если делать статус объектом? с поведением - чтоб статус знал можно ли в него двигать

Sergey
04.12.2017
21:17:25
а так то что ты описал - это паттерн State
простой конечный автомат)

Alan
04.12.2017
21:17:41
а доменные события чем реализуются?

Константин
04.12.2017
21:17:44

Alan
04.12.2017
21:17:58
опенсорс )))

Sergey
04.12.2017
21:18:32
а доменные события чем реализуются?
ну смотри, кто-то что-то сделал, это "что-то" генерит ивент что мол "вот что-то произошло". Ивенты файрятся по завершению бизнес транзакции. Ты можешь на них подписаться и что-то сделать, даже запустить новую бизнес транзакцию.

Alan
04.12.2017
21:18:57
евент диспатчером такое норм делать?

Борис
04.12.2017
21:19:06
Чет я разворачиваю sf4 с нуля и у меня горит - я чувствую себя ларавель девом - выполняю скрипты, не понимая, что происходит - и все работает.... С одной стороны - круто, с другой ну хз. Раньше было лампово, чтоли ^_^

Admin
ERROR: S client not available

Константин
04.12.2017
21:19:44

Sergey
04.12.2017
21:19:55

Борис
04.12.2017
21:20:01
ну с 2.7 много чего (последнюю юзал)

Sergey
04.12.2017
21:20:07

Борис
04.12.2017
21:20:07
ГЫ )))
да
Вообще, подскажите, как посмотреть все пакеты, доступные командой composer req *** ?

Sergey
04.12.2017
21:20:16
еее

Google

Константин
04.12.2017
21:20:32

Sergey
04.12.2017
21:20:52

Константин
04.12.2017
21:20:55

Борис
04.12.2017
21:20:57
composer search
но ведь search ищет в пэкеджисте, все пакеты. А мне бы вот эти модные - с одного слова

Sergey
04.12.2017
21:21:07

Борис
04.12.2017
21:21:36

Константин
04.12.2017
21:22:38
Кто нибудь phpunit юзает версии 6.5+ ?

Sergey
04.12.2017
21:23:09

Константин
04.12.2017
21:23:14
Я обновился с 6.4 на 6.5 и у меня упали тесты

Alan
04.12.2017
21:23:34

Константин
04.12.2017
21:23:52
В одном из моков по интерфейсу перестал реализовываться один метод. php падает на этапе компиляции

Alan
04.12.2017
21:24:30
или его на уровне приложения лучше использовать а для доменной логики что то отдельное?

Sergey
04.12.2017
21:26:03

Maxim
04.12.2017
21:28:19
Привет! Осваиваю symfony. Делаю doctrine:database:create , но не могу повлиять на collate и charset. Всегда имею latin. Что я делаю неправильно?
doctrine:
dbal:
driver: pdo_mysql
...
default_table_options:
charset: utf8
collate: utf8_unicode_ci

Константин
04.12.2017
21:29:18

Maxim
04.12.2017
21:29:45
хочу utf8 для сравнения строк и нормального отображения латинницы
У меня создается db c параметрами latin

Alan
04.12.2017
21:30:44
default_TABLE_options
таблички то потом создаются как надо симфой?
https://symfony.com/doc/3.3/doctrine.html
[mysqld]
хотя наверно достаточно добавить charset: utf8 внутри dbal

Ruslan
04.12.2017
21:33:54
Извините, что вмешиваюсь! А можно вопрос, честно новичек в symfony!
Директории:
1. EventListener - тут я слушаю события системные (те что есть) или которые создал, выполняю действия
2. Event - тут я создаю свои события
3. Listener - ?
4. Service - тут пишу бизнес логику, вызываю в контроллере
Я правильно все понимаю?

Maxim
04.12.2017
21:34:53