Laravel 4.2中的默认用户模型实现了 UserInterface 和 RemindableInterface ,但在查看我的用户模型的定义时,这些方法定义在用户模型上未实现这两个接口。
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');
}
当User类没有实现在这两个接口上定义的那些方法时,它怎么没有抛出任何错误?
答案 0 :(得分:2)
您可以看到User
课程使用两个特征UserTrait
和RemindableTrait
。如果检查这些特征,您将看到在那里实现了所需的方法。因此User
类不需要实现这些方法,只要它们是继承的。如果需要,您可以实现它们并覆盖/扩展继承的功能。
方法也可以从父类继承。所以这里的方法可以在Eloquent
类中实现,User
类扩展(虽然这不是这里的情况)。
您可以在PHP文档中阅读有关这些主题的更多信息: