title: Why are Laravel Models static and should I use static functions in my own Models?
body: <p>In Laravel Models use functions that are static and the documentation uses static functions to show how Models work. If I create a new Model for my application, it extends the base Model class but why is Laravel using static functions? I thought the idea is static anything is bad? For example, it makes testing harder?</p>
  
  <p>I'm just confused as most things can be retrieved from the DI container? For example, a Model called Flight, why is it not used like this inside a controller:</p>
  
  <pre class="lang-php prettyprint-override"><code>namespace App\Http\Controllers;
  
  use App\Flight;
  
  class FlightController
  {
      public __construct(Flight $flight)
      {
          $this-&gt;flight = $flight; // etc.
      }
  }
  </code></pre>
  
  <p>And Models are not even using a Facade either? When I create my own models am I suppose to always use static functions as well?</p>