синглтон заводское подключение пдо - PullRequest
0 голосов
/ 16 мая 2010

Эй, ребята, у меня много проблем, пытаясь понять это, и мне просто интересно, может ли кто-нибудь помочь мне с некоторыми вопросами. Я нашел некоторый код, который должен создать соединение с pdo. У меня была проблема с определением моего соединения в функциях. Кто-то предложил глобальные ссылки, но затем указал на «лучшее» решение Глобальное или Singleton для подключения к базе данных? . Мои вопросы с этим кодом:

  1. Какой смысл на фабрике соединений? Что входит в новую ConnectionFactory (...)

  2. Когда определено соединение $ db = new PDO (...); почему нет try или catch (я использую их для обработки ошибок)? Значит ли это, что я должен использовать 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();
    .
    .
    .
}

1 Ответ

3 голосов
/ 16 мая 2010

Вы, кажется, немного запутались в теме шаблонов дизайна, таких как фабрика. Возможно, вам следует сначала прочитать книгу или несколько учебных пособий о шаблонах проектирования в целом или общих шаблонах для PHP. Просто Google "шаблоны проектирования PHP". Есть много ресурсов на эту тему.

Но чтобы ответить на ваш вопрос вкратце:

  1. Фабрика соединений используется для создания объектов соединений независимо от фактической базы данных. Простая фабрика PDO будет управлять сборкой строк соединения DSN, в которых нуждается PDO, на основе параметров, переданных ей, и возвращать готовый к использованию объект PDO.

  2. В большинстве случаев полезно создавать более сложные классы адаптеров базы данных, которые обеспечивают обработку ошибок самостоятельно, а также более удобные способы выполнения запросов. Опять же, фабричный класс можно затем использовать для создания правильного объекта соединения в соответствии с вашей системой базы данных.

...