Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Meu listener está sendo chamado duas vezes, mas o evento só é disparado uma vez.
Eu copiei a base do código da documentação do Lumen 5.7 e aparentemente está tudo configurado corretamente. Não consigo encontrar o problema.
bootstrap/app.php
$app->register(App\Providers\EventServiceProvider::class);
**app/Providers/EventServiceProvider.php**
protected $listen = [
'App\Events\NewAuthEvent' => [
'App\Listeners\SendNewAuthListener',
],
];
**app/Events/NewAuthEvent.php**
use Illuminate\Queue\SerializesModels;
use App\Data\Entity\User;
use App\Data\Entity\Authorization;
use Illuminate\Support\Facades\Log;
class NewAuthEvent
{
use SerializesModels;
public $user;
public $auth;
public function __construct(User $user, Authorization $auth)
{
Log::debug("Disparado uma vez");
$this->user = $user;
$this->auth = $auth;
}
}
**app/Listeners/SendNewAuthListener.php**
use App\Events\NewAuthEvent;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use App\Data\Service\MessengerService;
use Illuminate\Support\Facades\Log;
class SendNewAuthListener
{
private $messenger;
public function __construct(MessengerService $messenger)
{
Log::debug("Chamado duas vezes");
$this->messenger = $messenger;
}
public function handle(NewAuthEvent $event)
{
Log::debug("Chamado duas vezes também");
$this->messenger->new($event->user, $event->auth);
}
}
**Disparando o evento:**
event(new NewAuthEvent($objUser, $objAuthorization));
Estou me esquecendo de algum parâmetro ou configuração? Agradeço desde já!@EdCesar beleza cara?
Acontece o segundo caso:
'Disparado uma vez Chamado duas vezes Chamado duas vezes também Chamado duas vezes Chamado duas vezes também'
Eu coloquei o log nos dois métodos (construtor e handle) porque em outro fórum me perguntaram se somente o construtor estava sendo chamado ou se o handle também estava.
@antonio_milat, beleza!
De olho, não vejo nada de errado.
É bobeira, mas não custa nada perguntar, quando você diz que o listener esta chamando duas vezes, nos logs fica:
1.
Disparado uma vez
Chamado duas vezes
Chamado duas vezes também
ou
2.
Disparado uma vez
Chamado duas vezes
Chamado duas vezes também
Chamado duas vezes
Chamado duas vezes também
Porque no primeiro caso, estaria certo. Ele foi chamado apenas uma vez, pois o construtor sempre sera executado junto e antes do handle