php – PDO在课堂内的合并

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – PDO在课堂内的合并脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一些问题需要理解.我想开始重写一些旧的 MySQL函数代码PDO.它的设置方式是包含这一行的外部文件(除其他外):
// db.PHP file   

$DB = new dbConnect(SERVER,DB,USER,PASSWORD,3306);

function my_autoloader($class)
{
    require_once ($_SERVER['DOCUMENT_ROOT']."/includes/".'class.' . $class . '.PHP' );
}

spl_autoload_register('my_autoloader');

哪个会创建与我的数据库的连接.这包含在我的页面顶部,也会加载我的所有课程.现在,如果我想使用PDO创建新连接,我会执行以下操作:

$conn = new PDO('MysqL:host='.SERVER.';dbname='.DB.';charset=utf8',PASSWORD);

但是,我不能在单独的文件上使用这行代码,并在类中调用PDO,如下所示:

require_once 'db.PHP';
class info
{

    PRotected $ID;

    public function __construct($id)
    {
        $this->ID = $id; // 
    }

    public function getName()
    {
        $query = "SELECT * From job";
        $q = $conn->query($query);
        $data = $q->fetch(PDO::FETCH_ASSOC);
            //do something wITh $data

    }
}

是否意味着我必须通过如下所示的聚合在构造函数中建立连接?

require_once 'db.PHP';
class info
{
    protected $ID;
    protected $pdo;

    public function __construct($id)
    {
        $this->ID = $id; // 
        $this->pdo = new PDO('MysqL:host='.SERVER.';dbname='.DB.';charset=utf8',PASSWORD);
    }

    public function getName()
    {
        $query = "SELECT * From job";
        $q = $this->pdo->query($query);
        $data = $q->fetch(PDO::FETCH_ASSOC);
        // do something
    }
}

还是有其他方法可以做到一点,我不知道.尝试重新编写我的所有类来合并它似乎很乏味.

不是在构造函数内部创建数据库连接,而是最好使其成为依赖项:
public function __construct(PDO $db,$id)
{
    $this->pdo = $db;
    $this->ID = $id;
}

要使用它,您可以:

// $db = new PDO('MysqL:host='.SERVER.';dbname='.DB.';charset=utf8',PASSWORD);
$info = new info($db,'123');
echo $info->getName();

这种方法的主要优点是您不再在类中存储任何配置.此外,您还可以传递任何实现PDO的内容,使用模拟数据库启用单元测试.

脚本宝典总结

以上是脚本宝典为你收集整理的php – PDO在课堂内的合并全部内容,希望文章能够帮你解决php – PDO在课堂内的合并所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。