Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> obiekt klasy X powinien wywolac metode z klasy Y bez dziedziczenia
wiewiorek
post
Post #1





Grupa: Zarejestrowani
Postów: 247
Pomógł: 11
Dołączył: 5.09.2009

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


Jeśli mam klasę o nazwie Polaczenie z prywatnym konstruktorem do połączenia z bazą danych, a chciałbym używać PDO (PDO umożliwia komunikację z wieloma bazami danych) to przez to, że mam prywatny konstruktor to nie mogę dziedziczyć po klasie PDO, bo inaczej dostaję błąd:
Access level to Polaczenie::__construct() must be public (as in class PDO)

A ja chcialbym moc wysylac zapytania do bazy danych przy uzyciu funkcji prepare() pochodzacej z klasy PDO w ten sposob:
  1. $polaczenie = Polaczenie::getInstance();
  2. $zapytanie = $polaczenie->prepare("INSERT INTO ksiazki(tytul, cena) VALUES(:tytul, :cena)");
  3. $zapytanie->bindValue(':tytul', $_POST['tytul'], PDO::PARAM_STR);
  4. $zapytanie->bindValue(':cena', $_POST['cena'], PDO::PARAM_STR);
  5. $zapytanie->execute();


Ale dostaje blad:
Call to undefined method Polaczenie::prepare()

Bo ta metoda jest w klasie PDO. Co mam zrobic ? Moglbym caly powyzszy kod wstawic do specjalnie utworzonej w tym celu metody w klasie Polaczenie i wtedy byloby ok, ale co ja mam tworzyc dla kazdego inserta oddzielna metode w klasie Polaczenie ? To jak mialbym inserty wykonywane na tabelach np. ksiazki, autorzy itd. ladowac je wszystkie do klasy Polaczenie ? Bez sensu. Co powinienem zrobic ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Void
post
Post #2





Grupa: Zarejestrowani
Postów: 112
Pomógł: 15
Dołączył: 2.02.2007

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


Możesz też dodać do swojej klasy potomnej metody, które wykorzystujesz w PDO o odpowiednich nazwach (np. query, prepare) i wywoływać za pomocą parent:: metody główne w klasie PDO. Np.
  1. class Polaczenie extends PDO
  2. {
  3. //...
  4.  
  5. public function prepare($query)
  6. {
  7. return parent::prepare($query);
  8. }
  9. }

Rozwiązanie o tyle dobre, że można dodać np. zliczanie lub cache'owanie zapytań.

Ten post edytował Void 7.09.2009, 18:47:52
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 3.10.2025 - 10:50