title: How to use binded implementation in Laravel Job Class?
body: <p>I would use interface in my Jobs and get contextual implementation of it in Jobs classes.</p>
  
  <p>I read all tuts.</p>
  
  <p>I register it: </p>
  
  <pre><code>class AppServiceProvider extends ServiceProvider
  {
      public function register()
      {
          $this-&gt;app
              -&gt;when(SendinBlueJob::class)
              -&gt;needs(MessageProviderInterface::class)
              -&gt;give(SendinBlueService::class);
      }
  }
  </code></pre>
  
  <p>I dispatch job:</p>
  
  <pre><code>class MessageObserver
  {
      public function created(MessageInterface $message)
      {
          SendinBlueJob::dispatch($message);
      }
  }
  </code></pre>
  
  <p>In job class I want to get binded service:</p>
  
  <pre><code>class SendinBlueJob implements ShouldQueue
  {
      use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
  
       public $message;
       public $messageProvider;
  
      public function __construct(MessageInterface $message, MessageProviderInterface $messageProvider)
      {
          $this-&gt;message = $message;
          $this-&gt;messageProvider = $messageProvider;
          $this-&gt;handle();
       }
  
      public function handle()
      {
          dd($this-&gt;messageProvider);
      }
  }
  </code></pre>
  
  <p>I can't dispatch job because server throws error:</p>
  
  <blockquote>
    <p>Too few arguments to function App\Jobs\SendinBlueJob::__construct(), 1
    passed in
    /var/www/vendor/laravel/framework/src/Illuminate/Foundation/Bus/Dispatchable.php
    on line 16 and exactly 2 expected</p>
  </blockquote>
  
  <p>I understand it, but I don't understand why Laravel doesn't injecting binded service if interface is called in constructor.</p>