Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: klasa bazowa
Forum PHP.pl > Forum > PHP > Object-oriented programming
qchar
Cześć.

Od jakiegoś czasu bawię się OP, i nie mam wiele doświadczenia. Podejrzewam, że problem jaki mam był już tu omówiony, ale że nie za bardzo wiedziałem co wpisać w pole "Szukaj", zdecydowałem stworzyć nowy temat.

Chciałbym stworzyć klasę bazową/podstawową (nie wiem jak to nazwać) która będzie mi pozwałała ładowac różne podklasy, i umożliwiać swobodny dostęp z każdej takiej podklasy do metod innej klasy dziedziczącej po tej podstawowej. Dla ilustracji:
  1.  
  2. // zakładam ze mam jakaś klasę main, i 2 klasy dziedziczące po niej a,b
  3.  
  4. $main = new main;
  5.  
  6. // klasa main jest tak napisana ze do klas a i b mogę odwoływać się w następujący sposób
  7.  
  8. $main->a->someMethodFromClassA();
  9. $main->b->someOtherMethodFromClassB();
  10.  
  11. // i teraz to czego nie wiem, czyli jak zrobić żebym mógł w klasie b korzystać z metod klasy a
  12.  
  13. class b extends main
  14. {
  15.  
  16. public function test()
  17. {
  18. $this->a->someMethodFromClassA() // questionmark.gif jak to zrobić
  19. }
  20.  
  21. }
  22.  


Generalnie wystarczą mi jakieś wskazówki, ale jakby ktoś miał trochę czasu i wrzucił jakiś przykładowy kod byłbym baaardzo wdzięczny.

phpion
Bez utworzenia obiektu się nie obejdzie:
  1. public function test() {
  2. $a = new A();
  3.  
  4. $a->someMethodFromClassA();
  5. }

chyba, że jest to metoda statyczna to wówczas:
  1. public function test() {
  2. A::someMethodFromClassA();
  3. }
zzeus
Jeśli klasa A i B dziedziczą po klasie MAIN, to klasa A nie wie nic o klasie B i klasa B nie wie nic o klasie A. Abyś mógł korzystać z metod klasy A w klasie B, klasa A musi dziedziczyć po klasie B. Więc jeśli klasa B dziedziczy po MAIN, a klasa A dziedziczy po B, to w klasie A masz dostęp do metod z klasy MAIN i z klasy B.

Pozdrawiam
LBO
Zainteresuj się bardziej przemyślanym mechanizmem - Symfony Dependency Injection - ponieważ z tym co proponujesz daleko nie zajdziesz.
qchar
@zzeus: To akurat jest dla mnie oczywiste, ale właśnie chcę uniknąć takiej struktury rozbudowującej się tylko w jednej płaszczyźnie. Mimo wszystko dzięki.

@phpion: Rozumiem, tylko właśnie pytanie brzmi czy da się, a jeśli tak to jak, zamiast tworzyć nowy obiekt, odwołać do już istniejącego w klasie main, zamiast tworzyć nowy.

@LBO: Ciekawa rzecz jeśli dobrze zrozumiałem na szybko przeczytaną dokumentację. Ale takim (podobnym winksmiley.jpg )rozwiązaniem już się bawiłem, choć we własnym autorskimi mocno uproszczonym podejściu. Dzięki.

Czekam na dalsze pomysły smile.gif
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.