Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> klasa bazowa
qchar
post
Post #1





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 19.07.2007

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


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.

Go to the top of the page
+Quote Post
phpion
post
Post #2





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




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. }
Go to the top of the page
+Quote Post
zzeus
post
Post #3





Grupa: Zarejestrowani
Postów: 441
Pomógł: 71
Dołączył: 3.09.2007
Skąd: wrocław

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


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


--------------------
Go to the top of the page
+Quote Post
LBO
post
Post #4





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

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


Zainteresuj się bardziej przemyślanym mechanizmem - Symfony Dependency Injection - ponieważ z tym co proponujesz daleko nie zajdziesz.
Go to the top of the page
+Quote Post
qchar
post
Post #5





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 19.07.2007

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


@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
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 Aktualny czas: 19.08.2025 - 22:52