在Doctrine中,我应该为多个用户级别使用哪种继承类型


Which inheritance type should I use for multiple user levels in Doctrine

我是OOP的新手,我不知道该如何进行。我的主要要求是我想要一个基本用户类:

User
id
username
email
password
salt
.....
Student
name
gender
school
address
Teacher
name
study
salary

我不知道应该使用单表继承还是类表继承。因为所有的学生或老师都要登录到系统中,所以我想保持这些数据的通用

Student和Teacher都是用户,所以Student是从User扩展而来的,Teacher也是。

检查继承是否合法,可以通过在两个对象之间说"是"来完成。

"学生就是老师"->错误

"学生是用户"->真正的

由于StudentTeacher有额外的不同字段,因此应该使用类表继承。"单表继承"将迫使您拥有许多具有多个NULL值的行,从DB设计的角度来看,这是一个坏主意。

顺便说一句,由于两个子类中都有name字段,因此可以将其向上移动。

我可以向你推荐这些书。他们把这个话题讲得很清楚。

  • PHP设计模式
  • 清洁代码(Robert C.Martin)

它们有助于您理解如何构建对象之间关系清晰、干净且可维护的软件。所有OOP用户必读,我想!