PHP PDO Class Design

У меня есть следующий класс для моего класса доступа к базе данных PDO.

Где лучшее место для $ conn = new db (); (в настоящее время в пределах Database.php)? Имея в виду структуру стиля MVC, Main.php является контроллером, а два других – это модели.

Благодарю.

database.php

class db { private $conn; public function __construct() { $this->conn = new PDO(...); } $conn = new db(); } 

Class.php

 // require Database.php class someClass { private $conn; public function __construct(db $conn) { $this->conn = $conn; } function myFunc($usr, $pwd) { // SQL } } 

main.php

 // require Class.php $myObj = new someClass($conn); $myObj->myFunc(PARAMS); 

Как вы можете сказать, $conn необходимо объявить вне определения someClass и до того, как вы someclass экземпляр someclass . Итак, есть два варианта, о которых я могу думать:

Объявите его перед созданием объекта $myObj и передайте его конструктору:

  $conn = new db(); $myObj = new someClass($conn); 

Или используйте шаблон дизайна singleton в классе db :

  $conn = db::getInstance(); $myObj = new someClass($conn); 

Где db::getInstance() определяется как:

 class db { private $conn; // Don't let anyone instantiate this class by themselves private function __construct() { $this->conn = new PDO(...); } private static $instance = null; public static getInstance() { if( self::$instance === null) { self::$instance = new db(); } return self::$instance; } }