編集:混乱を解消するために、実際には and を使用していませMale
んFemale
。より良い例は、親クラスAnimal
とサブクラスCat
とDog
です。
私はOOPの初心者ですが、これまでのところかなりよく理解しています。しかし、私ができる方法を見つけることができることが1つあります。
まず、ユーザーに基づいて新しいオブジェクトを作成します。ユーザーは(この例では)男性でも女性でもかまいませんが、データベースにチェックインしないと、男性かどうかを確認できません。次に、性別のサブクラスを持つ新しいユーザー オブジェクトを作成する必要があります。
たとえば、これが私の現在の(乱雑な)コードです。
$user = new Person();
$userType = $user->GetUserType($userid);
if ($userType == 'Male') {
$user = new Male($userid);
} else {
$user = new Female($userid);
}
新しいオブジェクトを作成したい場合は、毎回これを行う必要がありますが、これはやりたくないことです。
これを視野に入れるのに役立つもう少しのコードを次に示します。
class Person {
function GetUserType($userid) {
$db = mysqlConnect();
$stmt = $db->stmt_init();
// Get the players information
$stmt->prepare("SELECT user_type FROM user_information WHERE user_id = ?");
$stmt->bind_param('i', $userid);
$stmt->execute();
$stmt->bind_result($userType);
$stmt->fetch();
$stmt->close();
$db->close();
return $userType;
}
}
class Male extends Person {
// Male based things here
}
class Female extends Person {
// Female based things here
}
そこで、__construct
クラスのPerson
中で、ユーザーの性別をチェックし、適切なサブクラスを設定したいと思います。