Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Powiązanie ze soba klas
Forum PHP.pl > Forum > PHP
MILICJA
Wiatam wszystkich. Jakiś czas temu postanowiłem zająć się trochę programowaniem obiektowym. W czasie moich „ćwiczeń” natrafiłem na pewien problem. Tutaj jest schemat tego, co chce otrzymać. Nie proszę o kod tylko o jakieś propozycje, sugestie jak można rozwiązać mój problem. Tak więc mamy klase główną do której includowane są „klasa z funkcjami 1” i „klasa z funkcjami 2”. Zawierają one pewne funkcje które muszą działać w całym systemie. Wszystkie ich metody muszą być dostępne „klasie głównej” oraz w „klasie dodatkowej 1” i „klasie dodatkowej 2”. To był problem 1 smile.gif Kolejny polega na tym iż chcę aby „klasa dodatkowa 1” i „klasa dodatkowa 2” mogły przekazywać zmienne „głównej klasie”. Myśle,że przedstawiłem sprawe dosyć jasno smile.gif Czekam na dopowiedzi.



Schemat
-=Peter=-
Poczytaj o UML oraz o wzorcach projektowych (Twój problem rozwiąże zapewne Composite)
Cysiaczek
Wersja na szybko:

  1. <?php
  2. abstract class Glowna implements funkcyjna1{}
  3. class Dodatkowa extends Main{}
  4. class Funkcje1 implements funkcyjna1{}
  5. ?>


Interfejs funkcyjna zawiera wrappery na metody klas Funkcje1 i Funkcje2, które implementujesz w klasie klasie Main (albo w Dodatkowa1).
Wada - ciężko rozbudowywać - trzeba pilnować implementacji wrapperów. Jeśli jednak ilość klas jest sztywna, to wystarczy.

Wersja numer 2
Implementuj metodę __call() klasy Glowna, aby chybionych nazw metod szukała w innych obiektach i je wywoływała - elastyczne i proste ;]
Wada - nazwy metod powinny być unikalne, bo inaczej będą wałki.

Pozdrawiam.
MILICJA
Dzięki, troche nie rozumiem tej "wersji 2". Narazie zrobilem tak :
Tworze sobie obiekty klas „klasa z funkcjami 1 i 2”. Następnie wstawiam je jako zmienne globalne do „głównej klasy” . Klasy „dodatkowa 1 i 2” posiadają zmienna globalna obiektu „Głowna klasa”. W ten sposób wymiana danych następuje miedzy nimi. Wiem, że jest to niezbyt profesjonalne rozwiązanie, ale jak dla mnie stosunkowo użyteczne.
Pobieranie danych z np. z klasy glownej przez klase dodatkowa wyglada nastepujaco:

  1. <?php
  2. // klasa dodatkowa 1/2
  3.  
  4.  
  5. $this->klasaGlowna->PobierzDane();
  6. ?>
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.