嘿伙计们,我在尝试理解这个问题时遇到了很多麻烦,我只是想知道是否有人可以帮我解决一些问题。我找到了一些应该与pdo建立连接的代码。我遇到的问题是在函数中定义了我的连接。有人建议全局,但随后指出了一个“更好”的解决方案Global or Singleton for database connection?。我对此代码的疑问是:
连接工厂有什么意义?什么内容新的ConnectionFactory(...)
定义连接时$ db = new PDO(...);为什么没有尝试或捕获(我使用那些进行错误处理)?这是否意味着我必须为每个后续查询使用try和catch?
以下是代码:
class ConnectionFactory
{
private static $factory;
public static function getFactory()
{
if (!self::$factory)
self::$factory = new ConnectionFactory(...);
return self::$factory;
}
private $db;
public function getConnection() {
if (!$db)
$db = new PDO(...);
return $db;
}
}
function getSomething()
{
$conn = ConnectionFactory::getFactory()->getConnection();
.
.
.
}
答案 0 :(得分:3)
您似乎对工厂等设计模式的主题感到有些困惑。也许您应首先阅读一本书或一些关于PHP的一般设计模式或常见模式的教程。只是谷歌“PHP设计模式”。这个主题有很多资源。
但要简要回答一下你的问题:
连接工厂用于独立于实际底层数据库生成连接对象。一个简单的PDO工厂将根据您传递给它的参数管理PDO所需的DSN连接字符串的组装,并返回一个可以使用的PDO对象。
在大多数情况下,构建更复杂的数据库适配器类非常有用,这些类本身提供错误处理以及执行查询的更舒适方式。同样,可以使用工厂类根据您的数据库系统生成正确的连接对象。