Php 单件工厂连接pdo

Php 单件工厂连接pdo,php,singleton,pdo,factory,Php,Singleton,Pdo,Factory,嘿,伙计们,我很难理解这一点,我只是想知道是否有人可以帮我解决一些问题。我发现了一些应该用来创建与pdo连接的代码。我遇到的问题是在函数中定义连接。有人提出了globals,但随后指出了一个“更好”的解决方案。我对该代码的问题如下: 连接工厂的意义是什么?新的ConnectionFactory(…)中有什么内容 当连接被定义为$db=newpdo(…);为什么没有try或catch(我使用它们来处理错误)?这是否意味着我必须在后续的每个查询中使用try-and-catch 代码如下: class

嘿,伙计们,我很难理解这一点,我只是想知道是否有人可以帮我解决一些问题。我发现了一些应该用来创建与pdo连接的代码。我遇到的问题是在函数中定义连接。有人提出了globals,但随后指出了一个“更好”的解决方案。我对该代码的问题如下:

  • 连接工厂的意义是什么?新的ConnectionFactory(…)中有什么内容

  • 当连接被定义为$db=newpdo(…);为什么没有try或catch(我使用它们来处理错误)?这是否意味着我必须在后续的每个查询中使用try-and-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();
        .
        .
        .
    }
    

    您似乎对工厂这样的设计模式有点困惑。也许您应该先读一本书或一些教程,介绍PHP的一般设计模式或通用模式。只需谷歌“php设计模式”。在这个问题上有很多资源

    但简单地回答你的问题:

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

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


  • 您似乎对工厂这样的设计模式有点困惑。也许您应该先读一本书或一些教程,介绍PHP的一般设计模式或通用模式。只需谷歌“php设计模式”。在这个问题上有很多资源

    但简单地回答你的问题:

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

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


  • 谢谢,是的,我很困惑,因为我从来没有听说过像单身汉或工厂这样的东西。我不知道它们被称为设计模式,谢谢。关于我的问题,在我深入研究之前,你知道我可以看什么样的例子或好的资源吗?正如我所说的,谷歌会提供足够多的关于这方面的教程,我相信这里也有关于stackoverflow的好例子。还有一本书叫“PHP设计模式”,由O'Reilly出版,可能很有用。感谢技术是的,我很困惑,甚至从来没有听说过像singleton或factory这样的东西。我不知道它们被称为设计模式,谢谢。关于我的问题,在我深入研究之前,你知道我可以看什么样的例子或好的资源吗?正如我所说的,谷歌会提供足够多的关于这方面的教程,我相信这里也有关于stackoverflow的好例子。O'Reilly还出版了一本名为“PHP设计模式”的书,这本书可能很有用。这个工厂被破坏了:在getConnection()内部,$db应该是$This->db。否则,每次调用都会生成一个新的数据库连接。此工厂已断开:在getConnection()中,$db应该是$This->db。否则,每次调用都会生成一个新的数据库连接。