douxing1969 2015-03-07 05:41
浏览 28
已采纳

Laravel 4.2界面混乱

The default User Model in Laravel 4.2 implements both UserInterface and RemindableInterface but upon looking the definition of my User model, those methods defined on both interfaces are not implemented on the User model.

use Illuminate\Auth\UserTrait;
use Illuminate\Auth\UserInterface;
use Illuminate\Auth\Reminders\RemindableTrait;
use Illuminate\Auth\Reminders\RemindableInterface;

class User extends Eloquent implements UserInterface, RemindableInterface {

    use UserTrait, RemindableTrait;

    /**
     * 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', 'remember_token');

}

How come it doesn't throw any errors when those methods defined on those two interfaces are not implemented by the User class?

  • 写回答

1条回答 默认 最新

  • duanchifo2866 2015-03-07 07:01
    关注

    You can see that the User class uses two traits UserTrait and RemindableTrait. If you check those traits, you will see the required methods are implemented there. So the User class doesn't need to implement those methods, as long as they are inherited. If you want, you could implement them and override/extend the inherited functionality.

    Methods could also be inherited from parent classes as well. So here, the methods could be implemented by in the Eloquent class, that the User class extends (although that's not the case here).

    You can read more on these subjects in the PHP Documentation:

    Traits

    Object Inheritance

    Object Interfaces

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?