title: Laravel service provider explanation
body: <p>I'm not much familiar with Laravel Service provider and I have a question about it.</p>
  
  <p>Example: I have three classes SystemProfiler, SurveyProfiler and OfferProfiler which implements ProfilerInterface. And also I have ProfilerService class which inject ProfilerInterface in the constructor. I need to create different ProfilerService services with injection of each of that profilers.</p>
  
  <p><strong>ProfilerService:</strong></p>
  
  <pre><code>class ProfilerService {
  
      $this-&gt;profiler;
  
      function __construct(ProfilerInterface $profiler) {
              $this-&gt;profiler = profiler;
      }
  }
  </code></pre>
  
  <p><strong>I know how to do that in symfony2 framework:</strong></p>
  
  <pre><code>system_profiler:
      class: App\MyBundle\Profiles\SystemProfiler
  
  survey_profiler:
      class: App\MyBundle\Profiles\SurveyProfiler
  
  offer_profiler:
      class: App\MyBundle\Profiles\OfferProfiler
  
  system_profile_service:
      class: App\MyBundle\Services\ProfilerService
      arguments:
          - system_profiler
  
  survey_profile_service:
      class: App\MyBundle\Services\ProfilerService
      arguments:
          - survey_profiler
  
  offer_profile_service:
      class: App\MyBundle\Services\ProfilerService
      arguments:
          - offer_profiler
  </code></pre>
  
  <p>and then just call <code>$this-&gt;container-&gt;get()</code>  with alias of ProfilerService realization</p>
  
  <p>But  Laravel documentation said that "<em>there is no need to bind classes into the container if they do not depend on any interfaces.</em>". And ProfilerService not depend on interface. So I can bind each profiler to interface like so:</p>
  
  <pre><code>   $this-&gt;app-&gt;bind('App\MyBundle\Contracts\ProfilerInterface','App\MyBundle\Profiles\SystemProfiler');
  </code></pre>
  
  <p>or</p>
  
  <pre><code>$this-&gt;app-&gt;bind('App\MyBundle\Contracts\ProfilerInterface','App\MyBundle\Profiles\SurveyProfiler');
  </code></pre>
  
  <p>or</p>
  
  <pre><code>$this-&gt;app-&gt;bind('App\MyBundle\Contracts\ProfilerInterface','App\MyBundle\Profiles\OfferProfiler');
  </code></pre>
  
  <p><strong>but how I should bind which of the Profilers should be injected to the ProfilerService and when???</strong></p>
  
  <p>I would appreciate any help and explanations</p>