Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Wielodziedziczenie, Object Oriented
fones
post 27.07.2005, 01:15:19
Post #1





Grupa: Zarejestrowani
Postów: 65
Pomógł: 0
Dołączył: 7.08.2004
Skąd: Brześć Kujawski

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


Witam,
mam pewien problem... Otóż chciałbym aby pewna klasa (np. A) dziedziczyła wartości, funkcje itp. nie z jednej ale z dwóch innych klas (np. B i C).
Gdyby dziedziczenie było z jednej klasy, kod wyglądałby tak:
  1. <?php
  2.  
  3. class A extends B
  4. {
  5. }
  6.  
  7. ?>

ale ja chce z dwóch... Oto moje sposoby które NIE WYPALIŁY ;(
  1. <?php
  2.  
  3. class A extends B C
  4. {
  5. }
  6.  
  7. class A extends B & C
  8. {
  9. }
  10.  
  11. class A extends B && C
  12. {
  13. }
  14.  
  15. class A extends B, C
  16. {
  17. }
  18.  
  19. ?>

Ma ktoś jeszcze jakiś pomysł?
Prosze o pomoc, bo moje prace na warsztacie staneły sad.gif
Dzieki z góry biggrin.gif


--------------------
Politechnika Warszawwska, Informatyka, G1I3
Aktualnie C i C++, ale nadal bardzo php ;p
Go to the top of the page
+Quote Post
DeyV
post 27.07.2005, 01:24:17
Post #2





Grupa: Zarząd
Postów: 2 277
Pomógł: 6
Dołączył: 27.12.2002
Skąd: Wołów/Wrocław




Nie jest to możliwe (na szczęście)
Projekt OOP w php z góry zakłądał, że wielodziedziczenie jest złe, i że nie będzie ono wprowadzane.

Ewentulanie można użyć pewnego substytutu - interfejsów - których można urzyć wiecej niż jednego. Oczywiście - dotyczy to php5.

ps. Przenosze z pro


--------------------
"Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
Go to the top of the page
+Quote Post
bela
post 27.07.2005, 08:14:54
Post #3


Administrator PHPedia.pl


Grupa: Developerzy
Postów: 1 102
Pomógł: 2
Dołączył: 14.09.2003

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


Możesz też zrobić tak.
  1. <?php
  2. class a extends b {}
  3. class c extends a {}
  4. ?>


--------------------
Go to the top of the page
+Quote Post
SongoQ
post 27.07.2005, 08:44:15
Post #4





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


@bela_666 To nie jest wielodziedziczenie.


--------------------
Go to the top of the page
+Quote Post
bela
post 27.07.2005, 08:54:45
Post #5


Administrator PHPedia.pl


Grupa: Developerzy
Postów: 1 102
Pomógł: 2
Dołączył: 14.09.2003

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


SongoQ wiem, podałem alternatywe :] Dziedziczenie łańcuche to się chyba nazywa.


--------------------
Go to the top of the page
+Quote Post
Elf
post 24.07.2007, 14:36:51
Post #6





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

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


Cytat
Ewentulanie można użyć pewnego substytutu - interfejsów - których można urzyć wiecej niż jednego. Oczywiście - dotyczy to php5.

No nie bardzo. Pewne cechy wielodziedziczenia możesz uzyskać wykorzystując agregację obiektów, czy klas. PHP ma do tego specjalne funkcje, ale ja używam staromodnej asocjacji, która zresztą jest polecana. Radzę trochę poczytać: http://www.php.net/manual/pl/ref.objaggregation.php

Interfejsy przydają się tu, tylko i wyłącznie, do zapewnienia odpowiedniego API dla klasy dziedziczącej. Proszę nie mylić tych pojęć.
Go to the top of the page
+Quote Post
EuReKa
post 24.07.2007, 15:05:54
Post #7





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 22.07.2007

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


Cytat(DeyV @ 27.07.2005, 02:24:17 ) *
Nie jest to możliwe (na szczęście)
Projekt OOP w php z góry zakłądał, że wielodziedziczenie jest złe, i że nie będzie ono wprowadzane.

Stwierdzili, że w języku interpretowanym rozwikłanie zależności pomiędzy klasami byłoby zbyt skomplikowane. Jest to jedną z największych wad obiektowości w PHP (JAVA zresztą też) obok braku możliwości przeładowywania operatorów (rozszerzenie operator jest takie sobie).
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: 28.06.2025 - 19:26