Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Konstruktor klasy (DB) zwracający obiekt (PDO)
Forum PHP.pl > Forum > PHP > Object-oriented programming
starach
Witam.
Mam klasę która pośredniczy przy wybieraniu sterownika do bazy danych.
Niestety konstruktor klasy nie zamiast mi zwracać obiekt klasy PDO zwraca mi obiekt swojej własnej klasy.
Wygląda to mniej więcej tak
  1. <?php
  2. class DB {
  3. function __construct()
  4. {
  5. if($costam)
  6. {
  7. return new PDO($parametry);
  8. }
  9. }
  10. }
  11. ?>
Wnioskuję że nie zwraca obiektu klasy PDO bo pojawia mi się komunikat:
Fatal error: Call to undefined method DB::prepare()
Jak sprawić by jedna klasa mogła zwracać kilka różnych obiektów z różnych klas ?
Cysiaczek
Konstruktor nie może nic zwracać oprócz obiektu swojej klasy. Byłoby co najmniej dziwne, gdybyś wywołując obiekt jakiejś klasy dostał inną : P.
Użyj sobie np. metod statyczych

  1. <?php
  2. class DB {
  3.  
  4. static $allowed=array("pdo", "peardb");
  5.  
  6. static function getDriver($driverName){
  7. if (in_array($driverName, self::$allowed)){
  8. return new driverName();
  9. }
  10. }
  11. }
  12.  
  13. $db=DB::getDriver('pdo');
  14. ?>


oczywiście nie uwzględniłem parametrów itp, ale z tym sobie poradzisz.

Pozdrawiam.
starach
Ehh a już się cieszyłem że jest jakaś magiczna sztuczka która pozwoli mi na wprowadzenie tego w życie tak jak napisałem tongue.gif
Dzięki.
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.