gpt4 book ai didi

php - 扩展 PDO 类

转载 作者:行者123 更新时间:2023-11-30 23:49:12 25 4
gpt4 key购买 nike

我想开始使用 PDO(从 MySQL 扩展切换)并且我想添加一些方法但仍然具有完整的 PDO 功能。我想实现这样的功能:

$db->getAll("SELECT * FROM table WHERE field1=:foo AND field2=:baz", array('foo'=>$foo, 'baz'=>$baz));

我认为最好的方法是扩展 PDO 类,但在这种情况下,我不会让类的实例能够在类中使用它。有什么想法吗?

最佳答案

我建议不要扩展 PDO,而是像其他 ORM 那样围绕它创建一个库/包装器。

我会将您的示例代码构造成一个简单的类来进行解释。

class MyDB
{

private $pdo;

public function __construct(PDO $pdo)
{
$this->pdo = $pdo;
}

public function getAll($query, array $params)
{
$statement = $this->pdo->prepare($query);
$statement->execute($params);
return $statement->fetchAll();
}

public function getPdo()
{
return $this->pdo;
}

/**
* This is called if the method cannot be found.
* Pass it to PDO to handle.
*
* @param $name
* @param $arguments
*/
public function __call($name, $arguments)
{
return call_user_func(array($this->pdo, $name), $arguments)
}

}

如果您真的想直接访问 PDO,那么我提供了一个神奇的方法,但我不建议您采用该方法。参见 http://www.php.net/manual/en/language.oop5.magic.php

做这类事情对学习来说很有趣,但如果你想要一个严肃的 ORM,那么看看这个 SO 问题 Good PHP ORM Library?也研究你自己。

关于php - 扩展 PDO 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20566960/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com