在其他类中非常简单地使用PDO

时间:2018-10-23 10:39:19

标签: php pdo

我已经阅读了有关上述问题的一些教程和讨论,但是在使用其中的一个之前,我想知道我的解决方案是否可以接受。问题是我不想将我的Db类扩展到我所有运行查询的类(感觉很奇怪),根据建议之一,我也不确定构造函数或self实例是否必不可少。我并不反对他们,也许我只是在程序世界中花费了太多时间。

因此,我有一个带有常规参数的经典Db类。我想在其他类中运行查询,所以我认为我只是将PDO作为参数传递。我可以像这样使用它吗,这会有回扣吗?

<?php

    include 'db.php'; // usual stuff, returns PDO

    $obj = new Db;
    $obj->connect();

    class User { // in a separate file, normally

        public function getUser($obj) {
            $res=$obj->connect()->query("SELECT * FROM users");
            $row=$res->fetch();
            print_r($row);
        }
    }

    $u=new User;
    $u->getUser($obj);

?>

1 个答案:

答案 0 :(得分:3)

制作一个User服务/存储库类,该类处理您要与用户一起做的所有事情。将数据库传递给该数据库。界面示例:

interface UserServiceInterface
{
    public function __construct(Db $db);
    public function createUserFromArray(array $data) : User;
    public function findUser(int $id) : User;
    public function deleteUser(int $id) : bool;
    //etc, toArray, whatever else you might need
}

将您的用户保留为纯旧的PHP对象(PO​​PO),其中包含字段的获取器和设置器。