![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 162 Pomógł: 26 Dołączył: 19.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam, chcę sobie stworzyć rozszerzenie klasy mysqli. To znaczy chcę stworzyć nową klasę która dziedziczyłaby z mysqli wszystkie metody i właściwości, niektóre ich przeciążając (zastępując własnymi). Na przykład funkcję query chciałbym rozbudować o obsługę błedów. Z kodu programu wywoływana byłaby standardowo $mysqli->query(), ale miałaby być wykonywana moja funkcja. Pogrzebałem trochę w manualu i skleciłem coś takiego:
niestety nie działa ostatnia linia ($mysqli->server_info). Warning: main(): Couldn't fetch ExtendClass in D:\WWW\mysql_test.php on line 21 Wygląda na to że moja klasa nie dziedziczy z oryginalnej mysqli. Co robię źle? Ten post edytował kitol 13.02.2008, 11:47:59 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 984 Pomógł: 41 Dołączył: 16.03.2002 Skąd: Płock Ostrzeżenie: (0%) ![]() ![]() |
Na starcie już źle pojmujesz rozszerzanie klas.
Dlaczego tworzysz pole mysql, któremu przypisujesz klasę potomną ? Klasa ExtendClass sama w sobie staje się w tym przypadku klasą mysqli, jednak poszerzoną o nowe możliwości. Nie znam właściwości klasy mysqli, jednak prawidłowo tak to powinno wyglądać:
Ten post edytował em1X 18.02.2008, 17:56:46 -------------------- eh, co polska wódka to polska wódka
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 793 Pomógł: 32 Dołączył: 23.11.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Na starcie już źle pojmujesz rozszerzanie klas. Dlaczego tworzysz pole mysql, któremu przypisujesz klasę potomną ? Wiesz masz parę możliwości rozszerzania, dziedziczenie to jedna z nich, ale w tym przypadku chyba jest jedna z lepszych. Tylko że ona nie pozwala zmienić Ci sygnatury metod (muszą mieć tą samą listę argumentów), a dzięki agregacji można to osiągnąć, tylko że to wymusza przepisanie wszystkich metod które mają być użyte co jest często niewygodne (ale mimo wszystko jak głównym powodem jest zmiana sygnatury co poniektórych funkcji to jest to jedyna opcja). Jak jednak pisałem w tym przypadku raczej lepiej użyć tylko dziedziczenia i zrobić tak jak podałeś. -------------------- Algorytmy w PHP, czy ktoś o tym słyszał?
Dlaczego tak mało kobiet programuje? ponieważ nie zajmują się głupotami. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 19:05 |