Как использовать одно соединение MySql с несколькими объектами PHP. - PullRequest
2 голосов
/ 19 сентября 2011

Я прошел через множество примеров по этому вопросу, но чем больше я читаю, тем больше я запутываюсь (извините!). Мой приоритет - сделать это простым и эффективным. Создайте одно соединение MySql и поделитесь им с несколькими объектами PHP.

// open a db connection 
$dbc = new PDO(.......);

// allow multiple objects to use the same connection

$object_1 = new class_1($dbc);
$object_2 = new class_2($dbc);
$object_3 = new class_3($dbc);

// or should it be passed this way?

$object_1->connection($dbc);
$object_2->connection($dbc);
$object_3->connection($dbc);

// or should each of the classes be getting the connection
// from a singleton type db object? 

// should each object be an extesion of a db class?

// or is there something else I need to consider?

Ответы [ 2 ]

1 голос
/ 19 сентября 2011

Я предпочитаю сделать класс соединения как Singlton:

class DBConnection {
    // Store the single instance of DBConnection 
    private static $m_pInstance;

    private function __construct() { ... }

    public static function getInstance()
    {
        if (!self::$m_pInstance)
        {
            self::$m_pInstance = new DBConnection();
        }

        return self::$m_pInstance;
    }
} 
1 голос
/ 19 сентября 2011
// allow multiple objects to use the same connection

$object_1 = new class_1($dbc);
$object_2 = new class_2($dbc);
$object_3 = new class_3($dbc);

// or should it be passed this way?

$object_1->connection($dbc);
$object_2->connection($dbc);
$object_3->connection($dbc);

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

Для получения дополнительной информации по этой теме ищите статьи наВнедрение зависимостей.

Например: http://martinfowler.com/articles/injection.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...