[Laravel] Binding abstract to Interface

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

  • Crazy-
  • Registratie: Januari 2002
  • Laatst online: 07:58

Crazy-

Best life ever

Topicstarter
Ik ben bezig met het opzetten van een CommandBus in een Laravel project;

om de scheiding tussen U (Laravel)I & de app compleet te maken gebruik ik een eigen CommandBus (syncrhroon) welke redelijk simpel is.

Echter heb ik de wens om in mijn CommandBus een propertie te hebben met de geregistreerde Handlers van mijn commands.

PHP:
1
$command->register('CommandoX', CommandXHandler::class);


Echter wens ik dit per module via mijn ServiceProviders te laten verlopen:

PHP:
1
2
// AppServiceProvider > register:
 $this->app->bind(CommandBusInterface::class, SynchronousCommandBus::class);
PHP:
1
2
3
// OrderServiceProvider > register
$commandBus = $this->app->make(CommandBusInterface::class);
$commandBus->register(CreateOrderCommand::class, $this->app->make(CreateOrderHandler::class));


een var_dump van $commandBus geeft een netjes de binding aan; dat lijkt dus goed...
echter als ik nu het Command aanroep en execute krijg ik helaas de melding dat het Command niet geregisteerd staat bij de bewuste Handler

de check die ik doe in execute():

PHP:
1
2
3
if (! array_key_exists($commandName, $this->handlers)) {
    throw InvalidCommandException::byHandler($commandName);
 }


hier loop ik helaas een beetje vast

zodra ik in de controller __constractor() handmatig de hander binding maak, werkt het uiteraard wel ;-)

ik maak de fout in de OrderServiceProvider.php
wie schiet? :)

12,85kWp - ZB 7,5m2/400l - 5kW Pana H WP (CV&SWW) - 13,8kWh accu

Beste antwoord (via Crazy- op 19-09-2017 10:54)


  • Morax
  • Registratie: Mei 2002
  • Laatst online: 12-09 17:02
Ik denk dat je CommandBusInterface als een singleton moet registreren. Anders maakt hij elke keer een nieuwe instantie van je SynchronousCommandBus class wanneer je de binding ophaalt uit de container ;)

[ Voor 5% gewijzigd door Morax op 19-09-2017 09:46 ]

What do you mean I have no life? I am a gamer, I got millions!

Alle reacties


Acties:
  • 0 Henk 'm!

  • Harrie_
  • Registratie: Juli 2003
  • Niet online

Harrie_

⠀                  🔴 🔴 🔴 🔴 🔴

@Barryvdh kom d'r maar in :7

Hoeder van het Noord-Meierijse dialect


Acties:
  • Beste antwoord
  • +1 Henk 'm!

  • Morax
  • Registratie: Mei 2002
  • Laatst online: 12-09 17:02
Ik denk dat je CommandBusInterface als een singleton moet registreren. Anders maakt hij elke keer een nieuwe instantie van je SynchronousCommandBus class wanneer je de binding ophaalt uit de container ;)

[ Voor 5% gewijzigd door Morax op 19-09-2017 09:46 ]

What do you mean I have no life? I am a gamer, I got millions!


Acties:
  • 0 Henk 'm!

  • Crazy-
  • Registratie: Januari 2002
  • Laatst online: 07:58

Crazy-

Best life ever

Topicstarter
Morax schreef op dinsdag 19 september 2017 @ 09:46:
Ik denk dat je CommandBusInterface als een singleton moet registreren. Anders maakt hij elke keer een nieuwe instantie van je SynchronousCommandBus class wanneer je de binding ophaalt uit de container ;)
Thanks! dat was hem inderdaad.... :z

12,85kWp - ZB 7,5m2/400l - 5kW Pana H WP (CV&SWW) - 13,8kWh accu