title: Laravel Repository Pattern Contract
body: <p>I am trying to implement the repository pattern using Laravel. I can understand the advantages of having interfaces to abstract the data storage. </p>
  
  <p>But what about the objects returned by the methods defined in the interface. Should they also be defined in some kind of abstract class?</p>
  
  <p>For instance:</p>
  
  <pre><code>class UserRepository implements UserInterface {
      protected $user;
  
      public function __construct(Model $user)
      {
          $this-&gt;user = $user;
      }
  
      public function find($userId)
      {
          return $this-&gt;user-&gt;find($userId);
      }
  }
  </code></pre>
  
  <p>by doing this in my controller:</p>
  
  <pre><code>$user = UserRepository::find(1);
  $user-&gt;name
  </code></pre>
  
  <p>am I breaking the design pattern?</p>