Laravel: вызов функции-члена send () для строки в Listeners - PullRequest
0 голосов
/ 22 мая 2018

Я пытаюсь сделать pushnotification при регистрации нового пользователя. Поэтому я создал events с именем MemberNotificationEvents, когда я инициировал событие event(new MemberNotificationEvent($UserDetails));, когда мой поток signUpController полностью идет, но на MemberNotificationListener a public function handle(MemberNotificationEvent $event) возвращает ошибку, которая:

Вызов функции-члена send () для строки

Я поставил полный код MemberNotificationListener:

<?php

namespace App\Listeners;

use App\Events\MemberNotificationEvent;
use App\Services\PushNotificationService;
use Illuminate\Contracts\Queue\ShouldQueue;

class MemberNotificationListener implements ShouldQueue
{
private $pushNotificationService;
/**
 * Create the event listener.
 *
 * @return void
 */
public function __construct()
{

    $this->pushNotificationService = PushNotificationService::class;
}

 private function getMessageBody($username)
{
    return "Awesome! Welcome " . $username . " to IDM";
}

/**
 * Handle the event.
 *
 * @param  object  $event
 * @return void
 */
public function handle(MemberNotificationEvent $event)
{

    $username = $event->UserDetails->name; 
    $message = $this->getMessageBody($username);

    $this->pushNotificationService->send($event,['body' => $message]); // throw error
}
}

В чем проблема в моем коде?

1 Ответ

0 голосов
/ 22 мая 2018

Проблема с этой строкой:

$this->pushNotificationService = PushNotificationService::class;

Когда вы делаете SomeClass::class, это означает, что вы вводите имя класса, а не фактический класс.

Следовательно, когда вы позжесделайте $this->pushNotificationService->send(...), служба push-уведомлений - это просто имя класса, а не класс обслуживания.

Вторая часть проблемы заключается в том, что вам нужен фактический объект, чтобы вставить туда.Laravel может добавить его для вас в конструктор, а затем вы можете предоставить его.Как это:

public function __construct(PushNotificationService $service)
{
    $this->pushNotificationService = $service;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...