【问题标题】:Use of Command inside of a service在服务内部使用命令
【发布时间】:2016-05-17 11:29:59
【问题描述】:

我正在使用 Laravel 5.0 并尝试设置一个命令来在我的邮件服务中排队作业。

我的问题是我不知道如何将命令调度程序注入到我的邮件服务中。

我的结构:

  • 服务文件夹
    • Mailer.php(包含抽象类Mailer
    • UserMailer.php(包含扩展 Mailer 类的类 UserMailer

我尝试过的事情:

我尝试在 UserMailer 类和 Mailer 类中使用 DispatchesCommands 特征。我还尝试将 \Illuminate\Contracts\Bus\Dispatcher 注入到 UserMailer 类的构造函数中。

在所有三个实例中,我都收到“找不到类服务\邮件程序\发送电子邮件”的错误

Mailer.php:

abstract class Mailer
{
   public function emailTo($view, $mData)
   {

    Mail::queue($view, $mData, function($message) use ($mData)
    {
      //code here - not relevant 

        }
    });
 }
}

UserMailer.php:

use Illuminate\Contracts\Bus\Dispatcher as Dispatcher;

Class UserMailer extends Mailer
{

  protected $bus;

  function __construct(Dispatcher $bus)
  {
    $this->bus = $bus;

  }

  public function sendIndividualEmail($members)
  {

        // code here not relevant...

    $this->bus->dispatch(new SendEmail($members));

    return true;
  }

如何从我的 UserMailer 类中访问命令总线? TIA

【问题讨论】:

    标签: laravel laravel-5


    【解决方案1】:

    您应该为SendEmail 类导入完全限定的命名空间路径,例如:

    use Illuminate\Contracts\Bus\Dispatcher as Dispatcher;
    
    use Namespace\To\SendEmail; //<-- Add this "use" statement with correct namespace
    
    Class UserMailer extends Mailer
    {
        //...
    }
    

    因此,您可以在课堂上使用new SendEmail($members)。在您的代码中,PHPServices\Mailers 命名空间/文件夹中查找SendEmail

    【讨论】:

    • 谢谢,我很感激。这正是我所缺少的。
    猜你喜欢
    • 2018-06-22
    • 1970-01-01
    • 2020-08-04
    • 1970-01-01
    • 1970-01-01
    • 2017-02-05
    • 2021-08-27
    • 1970-01-01
    • 2020-01-05
    相关资源
    最近更新 更多