User
2 つの子クラス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) { ... }
}
私は当初、Factory クラスがここで機能する可能性があると考えていましたが、そのシナリオでは親クラスをインスタンス化できません。何か案は?