Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php5] Wykorzystywanie metod jednych klas w innych
Skowron86
post
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 22.02.2006

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


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

Ten post edytował Skowron86 3.03.2006, 11:36:55
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
LBO
post
Post #2





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

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


  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. ?>


Ten post edytował LBO 3.03.2006, 12:05:32
Go to the top of the page
+Quote Post
Skowron86
post
Post #3





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 22.02.2006

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


no tak, to tez wchodzi, w gre, ale myslalem ze jest jakies lepsze rozwiazanie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

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

pozdrawiam
Wojciech Skowronek
Go to the top of the page
+Quote Post
splatch
post
Post #4





Grupa: Zarejestrowani
Postów: 487
Pomógł: 7
Dołączył: 7.01.2004
Skąd: Warszawa

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


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

Ten post edytował splatch 3.03.2006, 12:29:43
Go to the top of the page
+Quote Post

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: 23.08.2025 - 07:05