title: laravel abstract method fatal exception error
body: <p>I am using the User class included with laravel 4.  I am trying to store a new question that belongs to the user and the user needs to be logged in to create. when I call the questions controller action store I get the following error</p>
  
  <pre><code>Class User contains 2 abstract methods and must therefore be declared abstract or implement the remaining methods (Illuminate\Auth\UserInterface::getAuthPassword, Illuminate\Auth\Reminders\RemindableInterface::getReminderEmail)
  </code></pre>
  
  <p>I have read a bit on abstract methods in php and while I don't completely understand them the error itself gives two solutions to the problem, declare the class abstract of implement the remaing methods.  I am guessing that since this is the model class that ships with laravel that the correct solution is not to change its declaration to abstract but to implement the remaining methods.  How do I do this correctly in this case and going forward?</p>
  
  <p>User Model</p>
  
  <pre><code>&lt;?php
  
  use Illuminate\Auth\UserInterface;
  use Illuminate\Auth\Reminders\RemindableInterface;
  
  class User extends BaseModel implements UserInterface, RemindableInterface {
  
      protected $guarded = [];
  
      public static $rules = array(
          'username' =&gt; 'required|unique:users|alpha_dash|min:4',
          'password' =&gt; 'required|alpha_num|between:4,8|confirmed',
          'password_confirmation'=&gt;'required|alpha_num|between:4,8' 
          );
  
      public function Questions($value='')
      {
          return $this-&gt;hasMany('Question');
  
      }
  
      /**
       * The database table used by the model.
       *
       * @var string
       */
      protected $table = 'users';
  
      /**
       * The attributes excluded from the model's JSON form.
       *
       * @var array
       */
      protected $hidden = array('password');
  
      /**
       * Get the unique identifier for the user.
       *
       * @return mixed
       */
      public function getAuthIdentifier()
      {
          return $this-&gt;getKey();
      }
  
      /**
       * Get the password for the user.
       *
       * @return string
       */
      public function getAuthPassword()
      {
          return $this-&gt;password;
      }
  
      /**
       * Get the e-mail address where password reminders are sent.
       *
       * @return string
       */
      public function getReminderEmail()
      {
          return $this-&gt;email;
      }
  
  }
  </code></pre>
  
  <p>Questions Controller</p>
  
  <pre><code>/**
       * Store a newly created resource in storage.
       *
       * @return Response
       */
      public function postStore()
      {
          $validation = Question::validate(Input::all());
  
          if($validation-&gt;passes()) {
              Question::create(array(
                  'question'=&gt;Input::get('question'),
                  'user_id'=&gt;Auth::user()-&gt;id
              ));
  
              return Redirect::Route('home')
              -&gt;with('message', 'Your question has been posted.');
  
          } else {
              return Redirect::to('user/register')-&gt;withErrors($validation)
              -&gt;withInput();
          }
      }
  </code></pre>
  
  <p>edit 1:  The error message includes '(Illuminate\Auth\UserInterface::getAuthPassword, Illuminate\Auth\Reminders\RemindableInterface::getReminderEmail)'  these two methods are in my user.php as publice functions as you can see above, so do I need to do something else to 'implement' them?</p>
  
  <p>edit 2: </p>
  
  <p>Laravel Src UserInterface Class</p>
  
  <pre><code>&lt;?php namespace Illuminate\Auth;
  
  interface UserInterface {
  
      /**
       * Get the unique identifier for the user.
       *
       * @return mixed
       */
      public function getAuthIdentifier();
  
      /**
       * Get the password for the user.
       *
       * @return string
       */
      public function getAuthPassword();
  
  }
  </code></pre>
  
  <p>laravel src RemindableInterface class</p>
  
  <pre><code>&lt;?php namespace Illuminate\Auth\Reminders;
  
  interface RemindableInterface {
  
      /**
       * Get the e-mail address where password reminders are sent.
       *
       * @return string
       */
      public function getReminderEmail();
  
  }
  </code></pre>
  
  <p>edit 3: </p>
  
  <p>php.ini related to error reporting </p>
  
  <pre><code>; error_reporting
  ;   Default Value: E_ALL &amp; ~E_NOTICE
  ;   Development Value: E_ALL | E_STRICT
  ;   Production Value: E_ALL &amp; ~E_DEPRECATED
  
  error_reporting = E_ALL 
  
  ; Eval the expression with current error_reporting().  Set to true if you want
  ; error_reporting(0) around the eval().
  ; http://php.net/assert.quiet-eval
  ;assert.quiet_eval = 0
  </code></pre>
  
  <p>basemodel class</p>
  
  <pre><code>&lt;?php
  
  class Basemodel extends Eloquent {
  
      public static function validate($data) {
  
          return Validator::make($data, static::$rules);
      }
  }
  
  
  ?&gt;
  </code></pre>
  
  <p>edit 4;</p>
  
  <p>Adding correct model class as it was when giving the error and how it is now with the fix</p>
  
  <pre><code>&lt;?php
  
  use Illuminate\Auth\UserInterface;
  use Illuminate\Auth\Reminders\RemindableInterface;
  
  class Question extends BaseModel implements UserInterface, RemindableInterface {
  
      protected $guarded = [];
  
      public static $rules = array(
              'questions'=&gt;'required|min:10|max:255',
              //'solved'=&gt;'in:0,1',
          );
  
      /**
       * The database table used by the model.
       *
       * @var string
       */
      protected $table = 'questions';
  
      /**
       * The attributes excluded from the model's JSON form.
       *
       * @var array
       */
      protected $hidden = array('');
  
      /**
       * Get the unique identifier for the question.
       *
       * @return mixed
       */
      public function getAuthIdentifier()
      {
          return $this-&gt;getKey();
      }
  
      public function user()
      {
          return $this-&gt;belongsTo('User');
      }
  
  }
  </code></pre>
  
  <p>add this to fix</p>
  
  <pre><code>/**
       * Get the password for the user.
       *
       * @return string
       */
      public function getAuthPassword()
      {
          return $this-&gt;password;
      }
  
      /**
       * Get the e-mail address where password reminders are sent.
       *
       * @return string
       */
      public function getReminderEmail()
      {
          return $this-&gt;email;
      }
  </code></pre>