@symfony_php

Страница 502 из 1418
Sergey
17.12.2017
19:14:44
можешь тоже набросить чего)

Константин
17.12.2017
19:15:47
чуть позже прочту, я тут что-то отупел резко сижу)

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

Егор
17.12.2017
19:22:12
по структуре проекта, забыл ссылку скинуть: https://gist.github.com/fesor/76d39b19b18f7103a7c058301dc6a8fe
Хорошая статья. Только почему имена папок то во множественном числе, то в единственном?

Google
Константин
17.12.2017
19:23:03
Но пока только думаю)

Sergey
17.12.2017
19:23:14
хз... как-то так сложилось)

это просто пример

Егор
17.12.2017
19:24:29
А чем графы рисовал?

Sergey
17.12.2017
19:24:31
Notifications - этот можно спокойно переименовать в единственное число и тогда в передах модуля все будет консистентно. Но называть модуль управления заказа Order я не хочу

можно было бы назвать OrderManagment но длинно.

или что-то более приближенное к домену

Егор
17.12.2017
19:25:25
А есть ли инструменты, которые по коду такое сгенерят? В PHPStorm генерируются только связи наследования

Sergey
17.12.2017
19:25:38
но там тебе придется потратить немало времени что бы удобно читаемый граф получить по твоему проекту

хотя это можно руку набить)

Google
Константин
17.12.2017
19:26:09
@fes0r у меня ощущение, что я как то не так использую генераторы. https://github.com/astra50/astra50.ru/pull/19/files#diff-4da5d77fff040fdbc1c6d6c4fffc6e99R58

Есть что сказать?)

Sergey
17.12.2017
19:27:10
тебе типа надо смерджить два генератора?

ну мол один из одного, один из второго и только потому к следующему

Егор
17.12.2017
19:27:23
но там тебе придется потратить немало времени что бы удобно читаемый граф получить по твоему проекту
Эх, на JS-е бы интерактивне что-то, чтобы можно было кружочки подвигать.

Sergey
17.12.2017
19:27:37
в phpmetrics можешь дергать)

но не рисовать

Константин
17.12.2017
19:27:55
Меня парят вызовы current() и next()

Sergey
17.12.2017
19:29:50
ну то есть... я бы больше парился что у тебя такой обход по коллекциями интересный

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

Sergey
17.12.2017
19:34:40
foreach ($this->reportTypeAndFinancing() as [$reportType, $financing]) { // code }

я бы так сделал)

или я не правильно задачу понял?

ну мол...

у тебя есть N репорт тайпов и M финансингов и надо получить N*M репортов?

foreach ($reportTypes as $type) { foreach ($financings as $financing) { yield [$type, $financing]; } }

типа

Google
Sergey
17.12.2017
19:36:49
меня смущают твои бесконечные циклы

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

Константин
17.12.2017
19:37:58
У меня такой логики нет, они просто друг за другом генерятся. То есть по мне должно быть что-то простое типа $report->setType($this->generateType()); А тут на 3 строки кода разложено

Sergey
17.12.2017
19:38:35
так ты скажи, у тебя будет min(N, M) репортов или N*M?

Константин
17.12.2017
19:38:57
Такой задачи не было

Sergey
17.12.2017
19:39:23
понял, тебе просто надо сгенерить 30 репортов

Константин
17.12.2017
19:39:43
угу

Sergey
17.12.2017
19:41:17
непонятно зачем тебе ++$index; если ты можешь в фориче ключик взять

или еще я часто делаю

foreach (range(0, self::REPORT_NUMBER) as $i) { $report = $this->generateReport(); $em->persist($report); } $em->flush();

а для типов репорта я бы тупо делал array_rand

Константин
17.12.2017
19:43:09
Я про ключ в foreach не подумал, никогда не брал ключ если там возвращается генератор)

Sergey
17.12.2017
19:43:14
генераторы тут как по мне излишнее усложнение - ими я бы только репорт возвращал уже готовый

Константин
17.12.2017
19:43:35
Ну я об этом и говорю

Sergey
17.12.2017
19:45:15
$reportTypes = ReportType::all(); $finanings = Financing::all(); while(true) { $report ->setType($reportTypes[array_rand($reportTypes)]) ->setFinancing($finanings[array_rand($finanings)]) yield $report; }

ну и в купе с foreach + range вместо while + break - будет проще восприниматься

Константин
17.12.2017
19:46:38
ну while(true) внутри генератора же

Sergey
17.12.2017
19:46:51
ну не "генератора" а функции которая генератор возвращает

Константин
17.12.2017
19:47:03
а, я понял о чём ты

Google
Sergey
17.12.2017
19:47:04
https://github.com/acelaya/doctrine-enum-type

вот еще прикольная штука

а ну тебе такое не особо канает

почему все так любят трейтами обмазываться?

trait Identity

Константин
17.12.2017
19:48:27
Надо к своей уже доку написать, всё лень

Sergey
17.12.2017
19:48:39
trait UpdatedAt - ух

Константин
17.12.2017
19:48:42
Ответ в описании что такое трейты)

Sergey
17.12.2017
19:48:53
Admin
ERROR: S client not available

Константин
17.12.2017
19:49:00
wat?

Sergey
17.12.2017
19:49:03
у тебя же тут нет дублирования

если у тебя есть 2 класса, каждый из которых имеет по 2 одинаковых приватных поля, это не значит что у нас дублирование.

а может быть тебе понадобится updatedAt в другой сущности по другому обозвать? скорее всего ты просто заюзаешь трейт и даже не будешь об этом думать

Константин
17.12.2017
19:50:21
Не значит, но такие общие вещи как id, createdAt мне нравится прятать в тейрты, чтобы при чтении сущности видеть только те поля ради которых она была создана

Sergey
17.12.2017
19:50:29
wat?
так же как goto заставляют тебя "прыгать" по flow of control, трейты заставляют тебя прыгать по зависимостям (файлам)

Константин
17.12.2017
19:51:41
Прятать в folding каждый раз при открытии файла ещё более не удобно чем лицезреть лишнее

Sergey
17.12.2017
19:54:27
если ты знаком со штормовским //<editor-fold

Google
Константин
17.12.2017
19:55:09
не знаком

Sergey
17.12.2017
19:55:54
//<editor-fold defaultstate="collapsed" description="id, timestamps and stuff..."> private $id; private $createdAt; private $updatedAt; //</editor-fold>

и каждый раз когда ты будешь открывать файлик в шторме

Константин
17.12.2017
19:58:05
Это куда писать?

Вот я дичь родил private function generateReportType(): Closure { /** @var Generator $generator */ $generator = \call_user_func(function () { while (true) { foreach (ReportType::all() as $type) { yield $type; } } }); return function() use ($generator) { $generator->next(); return $generator->current(); }; }

$report->setType($typeGenerator());

Константин
17.12.2017
20:00:40
Эксперимент удался, можно отказываться)

Sergey
17.12.2017
20:01:11


class Test { //<editor-fold defaultstate="collapsed" desc="ID, TimeStamps, Stuff..."> private $id; private $createdAt; private $updatedAt; //</editor-fold> }

Константин
17.12.2017
20:02:12
хм, интересная штука

Sergey
17.12.2017
20:02:13
может пригодится

Константин
17.12.2017
20:02:22
Правда обмазываться комментами как то такое себе

Sergey
17.12.2017
20:02:43
ну.... зато если надо - просто открываешь фолдинг и смотришь)

не теряя контекста

Константин
17.12.2017
20:03:16
Что то defaultstate="collapsed" не работает

Или текущее состояние не сбрасывается от переоткрытия таба?

Sergey
17.12.2017
20:06:16
не сбрасыватеся)

открыл - закрой)

а у других будет по умолчанию закрыт

(только что проверил в другой IDE)

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