PHP用户类是否应该扩展数据库类?

tom*_*456 6 php database pdo class

我不确定这是否完全是错误的,所以我正在寻找一些建议.

我已经建立了一个数据库类,其构造函数建立了与MySQL数据库的PDO连接.

我一直在关注单身人士和全球变量,但似乎总有人建议反对其中任何一个.

我正在尝试扩展数据库类的用户类,因此我可以调用PDO函数/方法,但维护单独的用户类代码.这是一件愚蠢的事吗?

nat*_*lez 4

您通常应该将连接传递给您的用户,以便您的用户类将数据库类型对象带入其构造函数,然后使用该数据库对象对数据库执行查询。这样您的数据访问逻辑就与业务逻辑保持分离。这就是所谓的组合,而不是你所说的继承。

如果您确实想掌握技术,那么最好有一个除了公共变量之外什么都没有的用户对象,然后您将使用“服务”来实现您的业务逻辑。

class UserService implements IUserService
{
    private $_db;
    function __construct(IDb $db) {
        $this->_db = db;
    }

    function GetAllUsers() {
        $users = Array();

        $result = $this->_db->Query("select * from user")

        foreach($result as $user) {

            //Would resolve this into your user domain object here
            users[] = $user;
        }
        return users;
    }
}
Run Code Online (Sandbox Code Playgroud)