编辑:为了消除一些混乱,我实际上并没有使用Male
and Female
。一个更好的例子是父类Animal
和子类Cat
和Dog
.
我对 OOP 有点陌生,但到目前为止我已经很好地掌握了它。但是,有一件事我完全可以找到一种方法。
首先,我创建了一个基于用户的新对象。用户可以是(对于这个例子)男性或女性,但如果不检查数据库,我无法检查他们是否是。然后我需要用他们的性别的子类创建一个新的用户对象。
例如,这是我当前的(凌乱的)代码:
$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
上,我希望它检查用户的性别并设置适当的子类。