Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php5] Wykorzystywanie metod jednych klas w innych
Forum PHP.pl > Forum > PHP > Object-oriented programming
Skowron86
Witam!

postanowilem przerzucic sie na php5 wiec jestem stosunkowo nowy w temacie obiektów. Z gory przepraszam jak pytania beda raczej proste, ale nie potrafie sobie sam z nimi poradzic ani znalezc odpowiedzi.

Stworzylem sobie dwie klasy (uniwersalne)

A ) do laczenia z baza i wykonywania zapytan wszelkiego rodzaju
B ) do tworzenia plikow, zapisywania w nich, odczytywania z nich, zmiany uprawnien etc

Teraz pisze wlasnie 3 klase ktora otrzymuje dane z formularza, sprawdza je, przeksztalca sobie tak jak ma i:

a ) dodaje wpis do bazy danych przy pomocy klasy A
b ) tworzy plik przy pomocy klasy B

tylko wlasnie nie wiem jak mam rozwiazac to abym mogl wykorzystac metody z klas A i B w mojej klasie C

do wczoraj potrzebowalem tylko zapisywac do bazy wiec dalem:

Kod
class C extends A


i dzialalo poprawnie, dokladnie tak jak chcialem, ale teraz jeszcze musze tam wcisnac B, oczywiscie moge dac:

Kod
class A
class B extends A
class C extends B


ale czy takie rozwiazanie jest dobre? Mi wydaje sie ono troszke dziwne...
Prosze o rade
z gory dziekuje

z powazaniem
Wojciech Skowronek
LBO
  1. <?php
  2.  
  3. class C {
  4. private $fileHandler;
  5. private $dbHandler;
  6.  
  7. public function __construct() {
  8. $this->fileHandler = new B();
  9. $this->dbHandler = new A();
  10. //inne operacje zwiazane z dzialaniem
  11. //klasy i/lub inicjalizacja klas A i B..
  12. }
  13.  
  14. public function zapisDoPliku($text) {
  15. $this->fileHandler->zapisz($text);
  16. }
  17.  
  18. public function zapisDoBazyDanych($text) {
  19. $this->dbHandler->zapisz($text);
  20. }
  21. }
  22.  
  23. ?>


nie zawsze dziedziczenie jest najlepszym rozwiazaniem....

P.S. poczytaj o statycznych klasach i metodach... wtedy bedziesz mogl wywolywac funkcje klasy bez tworzenia instancji np.

  1. <?php
  2.  
  3. public function zapisDoBazyDanych($text) {
  4. A::zapisz($text);
  5. }
  6.  
  7. ?>
Skowron86
no tak, to tez wchodzi, w gre, ale myslalem ze jest jakies lepsze rozwiazanie smile.gif

W kazdym bardz razie, dziekuje bardzo za pomoc, zaraz to zastosuje

pozdrawiam
Wojciech Skowronek
splatch
We większości książek o programowaniu obiektowym jest zalecane stosowanie kompozycji zamiast dziedziczenia. Sprzyja to zwiększeniu zachowania spójności i zmniejszeniu stopnia powiązania. Jeśli stworzysz bardzo skomplikowane drzewo dziedziczenia możliwe, że dojdziesz do sytuacji w której mimo stosowania klas będziesz zmuszony poprawiać kod w kilku(nastu) miejscach.
Więcej na temat kompozycji i dziedziczenia znajdziesz w tej książce
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.