我有一个问题,理解使用继承创建它们的类和子类的最佳实践。继承和继承最佳实践
比方说,我要实现我的项目
管理员,用户3类型的用户和联系人
联系这是一个用户(使用全名,电子邮件,电话,其他联系方式)由管理员或用户创建,他们不能登录到系统。想象一下,他们只是每个用户私人电话簿的成员。
用户这是一个可以由管理员创建的用户(同样具有全名,电子邮件,电话和其他联系方式)。他们可以创建联系人,但不能创建其他用户,他们可以登录到系统。他们也可以(也应该)成为管理员电话簿的成员。
管理这是一个用户(同样具有全名,电子邮件,电话和其他联系方式)。他们可以创建用户和/或隐形眼镜及(五言),他们可以登录到系统中(为了简单起见,可以说,这些用户通过Web形式的submittion创建)
的(简体)属性它们是:
联系:电子邮件,电话,城市,owner_id,date_in
用户:电子邮件,电话,城市,owner_id,密码,date_in
联系:电子邮件,电话,城市,密码,date_in
数据库表(用户)是一样的东西:
- ID:AUTO_INCREMENT
- owner_id:由谁这个用户的ID创建用户
- 全称:文本
- 电子邮件:文字
- 电话:文字
- 城市:text
- user_type:(Contact ||用户||管理员)
- date_in:日期时间,他们签署了
- 密码:(如果适用)
我一个不知道哇,我应该使用继承...是下面的方案是否正确?
class Contact{
}
class User extends Contact{
}
class Admin extends User{
}
其他一些问题: 应该有管理的方法和用户可以创建新的用户(允许其命名为create_user())。 但是他们每个人都应该进行不同的检查并允许不同的选项,并向数据库中插入不同类型的东西。这样做的最佳做法是什么?为父类写一个泛型并通过子类调用它,然后使用额外数据从子类更新条目? (例如:该管理员还应该将密码存储到数据库中)
UPDATE:也许我还不够清楚......
有将是通用的方法鱼米之乡,无关的类型用户,这就是为什么我要继承。我也想要一个共同的数据库表。
我的主要问题就在这里,是如何实现需要去不同的东西,如果它会不知常用的方法......例如,这是类“用户”的user_create()
function user_create($email, $telephone){
dbquery("insert into users ....");
return insert_id();
}
是很好的做法,以实现对管理员同样的方法是这样的:
function user_create($email, $telephone, $user_type, $password=''){
$new_id = parent::user_create($email, $telephone);
if (user_type == 'User'){
query("UPDATE users SET type='User', password='$password' WHERE id='$new_id'");
}
return $new_id;
}
Rijndael,非常感谢! 关于命名。它只是一个命名约定,与实际问题无关,是实现继承的最佳实践。 另外使用接口是我知道的事情,而且再次,不是问题的一部分。 无论如何,谢谢阿迦 –