单身工厂连接pdo

时间:2010-05-16 18:08:04

标签: php singleton pdo factory

嘿伙计们,我在尝试理解这个问题时遇到了很多麻烦,我只是想知道是否有人可以帮我解决一些问题。我找到了一些应该与pdo建立连接的代码。我遇到的问题是在函数中定义了我的连接。有人建议全局,但随后指出了一个“更好”的解决方案Global or Singleton for database connection?。我对此代码的疑问是:

  1. 连接工厂有什么意义?什么内容新的ConnectionFactory(...)

  2. 定义连接时$ db = new PDO(...);为什么没有尝试或捕获(我使用那些进行错误处理)?这是否意味着我必须为每个后续查询使用try和catch?

  3. 以下是代码:

    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();
        .
        .
        .
    }
    

1 个答案:

答案 0 :(得分:3)

您似乎对工厂等设计模式的主题感到有些困惑。也许您应首先阅读一本书或一些关于PHP的一般设计模式或常见模式的教程。只是谷歌“PHP设计模式”。这个主题有很多资源。

但要简要回答一下你的问题:

  1. 连接工厂用于独立于实际底层数据库生成连接对象。一个简单的PDO工厂将根据您传递给它的参数管理PDO所需的DSN连接字符串的组装,并返回一个可以使用的PDO对象。

  2. 在大多数情况下,构建更复杂的数据库适配器类非常有用,这些类本身提供错误处理以及执行查询的更舒适方式。同样,可以使用工厂类根据您的数据库系统生成正确的连接对象。