php OOP与通用用户类的子类的最佳实践

时间:2014-05-16 14:20:40

标签: php class oop

我回到过去的时候,我参与了一个围绕两种不同类型用户构建系统的项目。为了简单起见,我们称之为男人和女人。

我们有三个不同的班级。一个User类,包含有关所有用户的公共信息(例如名称,年龄等)。该类还拥有用户类型的属性)。另外两个类男人和女人扩展用户。

数据库包含三个表。一个用于User对象,一个用于Men对象,一个用于Woman对象。

我现在想到的问题是如何最好地创建男人或女人的实例(基于所有用户唯一的用户ID)。由于我们想根据用户类型创建Man或Woman的实例,我们使用首先检查用户类型然后返回一个对象或者Man或Woman的函数来创建它。

也许为了更好地解释它,它看起来有点像这样:

class User {
     private $id, $name;
     function __construct($userId) {
          // Get the information from the database and put it in instance variables
     }
}

class Man extends User {
    private $somethingManSpecific;
    function __construct($userId) {
         parent::__construct($userId);
         // Fetch info from the Man DB-table...
    }
}

class Woman extends User {
    private $somethingWomanSpecific;
    function __construct($userId) {
         parent::__construct($userId);
         // Fetch info from the Woman DB-table...
    }
}

function getUser($userId) {
    $type = find_the_type_of_user($userId); 
    if ($type == "man") return new Man($userId);
    else return new Woman($userId);
}

$fooUser = getUser(99); 

这感觉lika是一种奇怪的方式,但我想知道是否有更好的解决方案。

我的部分问题当然是应该如何看待类构造函数。我们使用构造函数从数据库中检索对象的所有属性 - 因此,如果您对此有任何反馈,那将非常感激。

谢谢!

0 个答案:

没有答案