stworzyłem klasę singleton służącą do obsługi bazy danych (aplikacja będzie korzystać tylko z jednej bazy danych). Konstruktor klasy przyjmuje argumenty takie jak adres serwera, login, hasło do DB.
Mam drugą klasę, która potrzebuje korzystać z bazy danych. Mam pytanie jak rozwiązać kwestię tworzenia obiektu klasy singleton, bo przecież nie tworzy się tutaj obiektu klasy "bezpośrednio", lecz za pomocą innej funkcji. Aktualnie zrobiłem to tak, że w klasie obsługującej bazę danych, w funkcji tworzącej/zwracającej obiekt tejże klasy, dodałem argumenty te same co w konstruktorze:
private function __construct($server, $username, $password, $database) { // tutaj jakieś operacje } public static function singleton($server = NULL, $username = NULL, $password = NULL, $database = NULL) { $className = __CLASS__; self::$instance = new $className($server, $username, $password, $database); } return self::$instance; }
Gdzieś tam np. w index.php tworzę sobie obiekt klasy obsługującej bazę danych:
$DB = BazaDanych::singleton($server, $username, $password, $database);
W tym wypadku w drugiej klasie, wykorzystującej bazę danych, mam referencję do wcześniej utworzonego obiektu klasy obsługującej bazę danych:
private $DB; public function __construct(){ $this->DB = BazaDanych::singleton() }
Wszystko działa, ale nie jestem pewien czy dobrze to zorganizowałem. Nie wygląda to sensownie...