Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wielodziedziczenie
Forum PHP.pl > Forum > PHP
fones
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
DeyV
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
bela
Możesz też zrobić tak.
  1. <?php
  2. class a extends b {}
  3. class c extends a {}
  4. ?>
SongoQ
@bela_666 To nie jest wielodziedziczenie.
bela
SongoQ wiem, podałem alternatywe :] Dziedziczenie łańcuche to się chyba nazywa.
Elf
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ęć.
EuReKa
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).
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.