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