@symfony_php

Страница 602 из 1418
Sergey
26.01.2018
21:06:08
про сеттеры и геттеры накидывать наверное бесполезно

Sergey
26.01.2018
21:21:03
еще хз че в этом году будет на конфе

было б збс если б nikic привезли

или jpauli

Google
Evgen
26.01.2018
21:42:25
ребята, такой вопрос. Есть сущность Database, которая представляет базу данных, которую можно сдампить и восстановить из дампа, причём в полях сохраняется информация вроде даты последнего восстановления после dump или import. Хочется юзать что-то вроде $db->import($pathToDump) и $db->dump($pathToDump). Нужно ли в таком случае передавать в методы объект, который действительно будет делать работу с базой и файлами? Или создавать отдельный объект, который будет вызывать эти методы и делать работу с файлами?
Вот с мейлером хорошая аналогия была приведена, где $mailer->send(email) более предпочтительно, чем email->send. По той же причине $dbManager->import, более предпочтительно чем entity->import. Емейл не должен знать о способах его доставки, так же и сущность базы данных - это только модель и как раз по solid, тоже тут уже озвученному, а вернее по принципу "S", ее н особо должно волновать способы ее импорта/экспорта

сервис - тоже просто объект... и если я не вижу ничего плохого в том что бы засунуть сущность в сущность, то и сервис в сущность засунуть не проблема по идее....
По моему мнению не стоит сущности крестить с зависимостями, выходящими за зону модели данных. Все по тойже причине что и мейлер должен работать с моделью письма, а не наоборот. В сущностях могу помещать дополнительные методы для обработки каких то несложных бизнес правил, но только до тех пор, пока эта логика не требует внешних зависимостей(сервисов)

Ivan
26.01.2018
21:53:14
и какой у email интерфейс?

у email.send() очевиден

если я в методах сущности вызываю new Process(...) или new \PDO(...) это тоже беда?

в методах executeCommand и connectToDatabase

app->execCommand('rm -rf var/log'); app->connectToDatabase()->query('show full processlist');

Sergey
26.01.2018
22:14:35
когда я увидел иньекцию сервисов через дабл диспатч в экшены, то подумал что это безумие

а щас перевожу на них все и кажется не таким уж и плохим

Ivan
26.01.2018
22:19:07
обычно контроллер имеет какие-то общие зависимости для всех экшнов

такие идут в конструктор

частные - через аргументы

Evgen
26.01.2018
22:20:34
Так а экшены и сущности это всетакиж две разные вещи

Google
Evgen
26.01.2018
22:22:12
если я в методах сущности вызываю new Process(...) или new \PDO(...) это тоже беда?
Тут на вкус и цвет конечно, но думаю вот как раз SOLID и хорошо объясняет почему такой подход "с душком"

Ruslan
26.01.2018
22:27:05
Всем привет! А есть возможность использовать easyadminbundle для сторонних баз, без энтити. Использовать dbal и т.д.

Sergey
26.01.2018
22:28:52
обычно контроллер имеет какие-то общие зависимости для всех экшнов
так можно скрыть тот факт что зависимостей 10+, 5 в конструктор, 5 в аргументы и вроде как ниче.. а по факту хреново

Ruslan
26.01.2018
22:28:56
Пример: есть vps1 с базой.

Sergey
26.01.2018
22:29:05
в конструктор отдаю то что нельзя автовайрингом сделать

Sergey
26.01.2018
22:32:06
можно, но это будет очередной $this->get(...)

от которого я пытаюсь уйти

Ivan
26.01.2018
22:32:22
Ну или параметры

Да и зачем следить за зависимостями в контроллерах?

Sergey
26.01.2018
22:35:03
я вот сижу щас смотрю на контроллер у которого 18 зависимостей в аргументах

Ivan
26.01.2018
22:35:29
В пределах одного экшна, да

Sergey
26.01.2018
22:36:42
это не считая всяких твигов и прочего)

Pavel
27.01.2018
06:24:29
http://symfony.com/blog/new-in-symfony-4-1-invokable-event-listeners

Petr
27.01.2018
08:24:09
У него есть только свойства кому, куда, содержимое и т.п.

Google
Ihor
27.01.2018
08:26:18
Да, что-то я с утра не понял ))

Sergey
27.01.2018
16:51:34


без единого публичного сервиса собирается контейнер

инлайнит он конечно жестко

Pavel
27.01.2018
20:34:35
При установке phpunit через flex нет самого phpunit, когда добавляешь в зависимость сам пакет, flex пишет мол удалите и установите через flex. wtf?

Andrew
28.01.2018
08:20:47
Подскажите пожаулйста, как можно автоматически сделать доступным https://github.com/thephpleague/tactician-bundle во всех контроллерах, а так же как динамически связывать commands и их handler, потому что в сервисе уже более 200+ комманд, и их становиться сложно поддерживать.

так как каждый раз прописываю такое

# Register TacticianCommandBus Handlers for Commands to Bus app.handler.createuserbuscommandhandler: class: App\Handler\CreateUserBusCommandHandler tags: [{name: tactician.handler, command: App\Command\CreateUserBusCommand, typehints: true}] autowire: true #Register Controllers where Command Bus service will be injected App\Controller\RegistrationController: arguments: - '@tactician.commandbus.default' calls: - [setContainer, ['@service_container']]

Выходит довольно громоздко

Andrew
28.01.2018
08:47:08
Выходит довольно громоздко
Compiler Pass'ы должны помочь

Andrew
28.01.2018
08:47:50
Скажите пожалуйста, это что "Compiler Pass'ы"?

Andrey
28.01.2018
08:57:31
Во время сборки контейнера отрабатывают

Загугли, в доке есть

Andy
28.01.2018
08:58:37
Они автоматом могут проставлять тэги, например

Andrew
28.01.2018
09:00:42
https://symfony.com/doc/master/service_container/compiler_passes.html

Andrew
28.01.2018
09:28:04
# Register TacticianCommandBus Handlers for Commands to Bus app.handler.createuserbuscommandhandler: class: App\Handler\CreateUserBusCommandHandler tags: [{name: tactician.handler, command: App\Command\CreateUserBusCommand, typehints: true}] autowire: true #Register Controllers where Command Bus service will be injected App\Controller\RegistrationController: arguments: - '@tactician.commandbus.default' calls: - [setContainer, ['@service_container']]
ну с контроллерами простыни легко убрать — autoconfigure + autowire в defaults должны помочь, а вот с регистрацией хендлеров нужно будет писать compiler pass для генерации command на основе имени класса хэндлера

Andrew
28.01.2018
09:30:12
@andrewkovalyov _defaults: autowire: true autoconfigure: true public: false А в контроллерах

И если убрать из сервисов передачу ComandBus для каждого контроллера, будет везде выдавать ошибки

Cannot autowire service RegistrationController": argument "$commandBus" of method "__construct()" references class "League\Tactician\CommandBus" but no such service exists. It cannot be auto-registered because it is from a different root namespace.

Google
Andrew
28.01.2018
09:34:27
CommandBus

namespace League\Tactician;

class CommandBus {

Symfony 4.0.3

Andrew
28.01.2018
09:36:03
CommandBus
посмотри лучше через debug:container, у тебя эксепшн говорит прямо противоположное

а, еще вариант может быть с порядком подключения бандлов — твой appbundle должен быть подключен позже этого iirc

Andrew
28.01.2018
09:42:54
1 - я перенес бандл в самый низ списка <?php return [ Symfony\Bundle\FrameworkBundle\FrameworkBundle::class => ['all' => true], .... League\Tactician\Bundle\TacticianBundle::class => ['all' => true], ] 2 - пришлось временно убрать из конструктора CommandBus что бы выполнить комманду debug:container В поле "Class name" нет ссылки на CommandBus class, а значит, он не зарегестрирован Так же попробовал сделать debug:container log, всего 51 алиас на сервисы, CommandBus нет в списке.

Admin
ERROR: S client not available

Bohdan
28.01.2018
09:45:11
хееей

там ведь есть другой тип хендлеров

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

и тогда надо будет регистрировать только сами хендлеры + давать им теги

Andrew
28.01.2018
09:46:26
да я читал, у меня не работает

вроде такого?\

# Register TacticianCommandBus Handlers for Commands to Bus app.handler.createuserbuscommandhandler: class: App\Handler\CreateUserBusCommandHandler tags: [{name: tactician.handler, command: App\Command\CreateUserBusCommand}] autowire: true

Daniel
28.01.2018
09:48:02
Ребята, вопрос слегка по менеджменту. Когда аналитик лезет в базу данных и начинает продумывать таблицы и ключи - это типа data driven programming?

И как вообще возможно жить с data driven programming-ом (если оно так называется конечно)

Google
Daniel
28.01.2018
09:48:49
Когда ты пишешь сущности и т.п. Не делать же экспорт в код из базы данных

Отсюда ощущение, что data-driven-programming (...) старое говно, а анал долбоебан

Andrew
28.01.2018
09:49:23
@thatside так ведь все-равно в сервисах много комманд)

Bohdan
28.01.2018
09:49:24
и хендлер такого типа public function createClientInvoice(CreateClientInvoice $command) при этом его имя любое, важен тайпхинт

Andrew
28.01.2018
09:49:39
А когда аналитик стал DBA?

Daniel
28.01.2018
09:50:00
Как такового DBA нету просто

Допустим даже есть DBA

Как с этим жить-то?

Bohdan
28.01.2018
09:50:24
у меня в сервисах команды не упоминаются, только хендлеры но ведь ты можешь сделать вообще автоконфигурацию и использовать resource и регистрировать их все в папке как сервис с заданными тегами

Andrew
28.01.2018
09:51:31
Как такового DBA нету просто
Ему эти таблицы и ключи зачем нужны? Если для аналитики, как вариант ты ему можешь строить отдельную базу-проекцию основной и пусть там веселится

Bohdan
28.01.2018
09:51:54
@thatside так ведь все-равно в сервисах много комманд)
а, или тебе нужно, чтобы команды тоже имели доступ к контейнеру?

Andrew
28.01.2018
09:51:55
@thatside Что то вроде такого я и пытаюсь сделать, авторегистрацию комманд и их хендлеров, и что б каждый раз не надо было регестрировать контроллер и передавать туда '@tactician.commandbus.default'

Daniel
28.01.2018
09:51:59
Смысл в том, что сейчас он ответственный* за новый функционал и уже создал таблицы и требует, чтобы в базе все так и было

Andrew
28.01.2018
09:53:22
@thatside сейчас я вынужден регестрировать каждый раз команду в сервисах и делать ей тайпхинт для ее хендлера. А еще, вынужден регестрировать каждый контроллер и пердавать туда '@tactician.commandbus.default'

Bohdan
28.01.2018
09:53:59
что - то у тебя странно вообще...

Daniel
28.01.2018
09:54:05
Есть ли такое вообще, что изначально чувак (анал или DBA или еще кто-то) делает таблицу, а вы потом делаете из всего этого говна сущности?

Просто ладно бы я писал SQL скриптики

Так у меня ж доктринка, мне че, SQL + RSM теперь юзать

Andrew
28.01.2018
09:54:52
@thatside и вышло у меня очень много сервисов, только для ComandBus

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