我有一个父类User
,它有两个子类User_Instagram
和User_Email
. 我使用这些类来支持多种登录方法:用户可以选择使用 Instagram、电子邮件或两者都登录(一次使用电子邮件,然后使用 Instagram)。
该类User_Instagram
包含 Instagram 特定的用户参数(如 InstagramUserId、Bio 等)。该类User_Email
用于使用电子邮件/密码组合的典型注册。
我试图弄清楚如何以一种 OOP 投诉的方式实现这一点。我需要能够:
User_Instagram->register($token)
通过调用或注册用户User_Email->register($email,$password)
- 实例化一个
User
类,以便能够访问一般用户信息(如$userid
)并了解他登录了哪些服务(电子邮件、Instagram 或两者)。
我目前实现的方式有点难以维护——我很确定这是完全错误的(称之为直觉)。
当前的班级结构
父类
class User {
protected $userid = NULL;
protected $loggedInServices = array('instagram'=>0,'email'=>1);
...
}
和子类:
class User_Instagram extends User {
private $instagram_userid;
private $bio;
private $profile_pic;
private $token;
...
public function signIn( $token ) { ... }
public function register( $token ) { ... }
}
class User_Email extends User {
private $email;
private $password; # hashed, of course ;)
public function signIn( $email, $password) { ... }
public function register( $email, $password, $passport_number) { ... }
}
我最初认为工厂类可能在这里工作,但在那种情况下无法实例化父类。有任何想法吗?