На этом я много разбираюсь, но чем больше я читаю, тем больше меня путают (извините!). Мой приоритет – держать его простым и эффективным. Создайте одно соединение 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?
// 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);
Оба они правильны, хотя, если для работы объекта требуется соединение с базой данных, предпочтительным является его передача в конструктор.
Для получения дополнительной информации по этой теме просмотрите статьи об Injection Dependency.
Я предпочитаю, чтобы класс подключения был как 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; } }