Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: PHP OOP i Bazy danych
Forum PHP.pl > Forum > PHP
pitos
Witam mam taki problem pisze sobie frameworka i mam maly problem, uzywam PDO i Singleton jednak gdy mam druga klase to trzeba jakos przekazac instacje polaczenia bazy danych jak wy to przekazujecie czy w konstruktorze nowej klasy robicie cos takiego:
  1. <?php
  2. public static function connect($dsn,$username,$password){
  3. self::$instance = new PDO($dsn, $username, $password);
  4. return self::$instance;
  5.  
  6. }
  7. public static function getInstance(){
  8. if(!self::$instance){
  9. throw new Exception('Istance for Singleton has no set',3);
  10. }else{
  11. return self::$instance;
  12. }
  13. }
  14. ?>

Czy moze nowa klasa dziedziczy po klasie w ktorej nastapi polaczenie questionmark.gif
revyag
hę ?
Kiedy utworzysz już połączenie, gdzieś na początku skryptu to nie musisz już go przekazywać. Zakładając oczywiście że wszystko masz poprawnie załadowane.
Do klasy możesz przekazać obiekt bazy danych, albo odwoływać się statycznie.

np.

  1. <?php
  2. .....
  3. $oDb = new DB();
  4. $sValue = $oDB->GetValue($sQuery);
  5. //albo
  6. $sValue = DB::GetValue($sQuery);
  7. ?>
thornag
Ja bym to zrobil tak, ze trzymalbym w configu info do bazy danych, a pozniej:

  1. <?php
  2. class DB {
  3. public static function getInstance(){
  4.  
  5. if(!self::$instance instanceof PDO){
  6. self::$instance = new PDO($aConfig['dsn'], $aConfig['username'], $aConfig['$password']);
  7. }
  8. return self::$instance;
  9. }
  10.  
  11.  
  12. }
  13. }
  14. ?>


Oczywiscie to tylko pseudokod bo ten konfig trzeba rozwiazac inaczej.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.