Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Konstruktor klasy (DB) zwracający obiekt (PDO), Jak konstrukor może zwracać różne obiekty nie swojej klasy ?
starach
post 21.05.2007, 16:19:06
Post #1





Grupa: Zarejestrowani
Postów: 999
Pomógł: 30
Dołączył: 14.01.2007
Skąd: wiesz ?

Ostrzeżenie: (0%)
-----


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 ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
Cysiaczek
post 21.05.2007, 16:43:38
Post #2





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




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.


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post
starach
post 21.05.2007, 17:10:39
Post #3





Grupa: Zarejestrowani
Postów: 999
Pomógł: 30
Dołączył: 14.01.2007
Skąd: wiesz ?

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 6.07.2025 - 16:32