我对 Laravel 还很陌生(使用的是迄今为止的最新版本 5.2),因此我遇到了以下困境:我知道 Laravel 附带了一个User
开箱即用的类,但我想开发一个系统,在其中我可以有另外两种类型的用户,称为Researcher
and Admin
.
我的主要需要创建完全不同的用户类别(研究员和管理员),可能继承自User
因为它们之间的业务逻辑几乎 100% 不同,我不想在数据库中创建一列来对用户类型进行分类。此外,库存之间没有太多重叠的字段User
, Admin
and Researcher
类。
我的主要问题是:如果我从User
我的另外两堂课?我知道 OOP 的原则,并且凭直觉我认为如果我执行以下操作应该没问题:
//'Stock' User class:
//
class User extends Authenticatable{
//Any overlapping logic between Researcher and Admin.
}
class Researcher extends User{
//My class definition here.
}
class Admin extends User{
//My class definition here.
}
然后使用这两个类,就像我通常使用该类的实例一样User
。我的意思是使用所有方法并且开箱即用User
功能。
问题延伸:
在写我的问题时,我意识到班级User
默认情况下看起来像这样:
<?php
namespace App;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name', 'email', 'password',
];
/**
* The attributes excluded from the model's JSON form.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
}
我不能只执行以下操作而不是继承User
创建我的其他 2 个课程(Researcher
& Admin
):
//Researcher Class:
namespace App;
use Illuminate\Foundation\Auth\User as Authenticatable;
class Researcher extends Authenticatable
{
//Class definition...
}
...
//Admin Class:
namespace App;
use Illuminate\Foundation\Auth\User as Authenticatable;
class Admin extends Authenticatable
{
//Class definition
}
在这种方法中,我试图“模仿”User
班级。问题是我不知道内核中是否有任何逻辑被硬编码并被引用User
隐式类。
任何想法和帮助将不胜感激。抱歉,如果这对你来说很愚蠢。我刚刚开始使用 laravel 框架。
Cheers!