Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Konstrukcja aplikacji - klasy
Forum PHP.pl > Forum > PHP
busterek
Witajcie.
Chciałbym poprosić praktyków o pomoc. Wszystkie kursy, czy teksty pomocy jakie znalazłem na temat klas jakoś mnie nie zadowalają. A chciałbym zacząć pisać moje aplikacje jakoś bardziej sensownie.
Główne pytanie brzmi jak uzależniać klasy między sobąquestionmark.gif Uściślam problem.
Załóżmy, że piszę system do obliczania urlopów (planowanie urlopów i ich rozliczanie, drukowanie wniosków, drukowanie raportów). W takim projekcie widzę następujące klasy:
- pracownicy (wszelkie operacje związane z obsługą listy pracowników)
- urlopy (operacje dotyczące rejestracji i rozliczania urlopów)
- raporty (operacje generowania różnego rodzaju wydruków: wnioski urlopowe, zestawienia urlopów itd.)

Pewnie musi być jeszcze jakaś klasa, gdzie są wszelkie operacje związane z obsługą bazy danych i jakaś główna klasa aplikacji.

Jak to teraz powiązać ze sobą?
Czy wszytkie klasy powinny dziedziczyć po klasie głównej? Czy może zrobić tak jak robię do tej pory, czyli klasa główna tworzy klasy podrzędne w konstruktorze? Wtedy mam zapis, który wałkuję od jakiegoś czasu: $klasaGlowna->klasaPodrzedna->metoda();

Podpowiedzcie coś?
CuteOne
Widzę, że podstawy masz już za sobą, może zainteresuj się jakimś frameworkiem? Np. CI, Kohana, Zend 1 - znacznie ułatwi ci to pisanie własnych aplikacji (no i nauczy dobrych praktyk smile.gif
busterek
No właśnie nie chcę frameworka. Jakoś tego nie czuję. Po prostu czuję wtedy, że nie panuję nad kodem aplikacji. Wiem, że brzmi to dziwnie, ale tak jest.
vermis
Na dłuższą metę i tak nie będziesz w stanie całego kodu pisać samodzielnie. Lepiej się z tym od razu pogodzić i skorzystać z frameworka, dużo wygodniej się pracuje. Poza tym jak wyglada kod PHP też nie wiesz i nie przeszkadza Ci to z niego korzystać. Podobnie jest z frameworkiem dostajesz narzędzie z którego korzystasz nie wnikając (za bardzo) w jego kod.
Olbrych
Pracowników, urlopy i wnisoki pewnie masz zapisane w bazie. Więc lepiej jest tutaj działać na modelach, które odwzorowują tabele w bazie danych i relacje między nimi.
Jeżeli niechcesz korzystać z framework-ów, które mają wbudowaną ORM, możesz bez problemu do swojego projektu podpiąć osobny ORM np. Propel lub Doctrine.
Używa się ich bardzo wygodnie i ułatwiają życie, ale jeżeli będziesz wyświetlał duże listy z wieloma warunkami, które mają się szybko generować to wtedy używaj czystego SQL,
gdyż ORM-y będą tworzyły bardzo dużo obiektów. Podsumowując do operacji i zależności na obiektach, które są odwzorowane w bazie danych ORM-y są bardzo dobre.
busterek
Pracowników i urlopy mam w bazie. Wnioski są generowane na podstawie zapisanych urlopów, więc ich nie muszę zapisywać w bazie. Przynajmniej w założeniach projektu nie muszę. smile.gif
crafter
Bardzo szybko można to powiązać ze sobą za pomocą ORMA który jest zaimplikowany praktycznie w kazdym lepszym frameorku typu zend czy symfony lub uzyc doctrine lub propel.
dziala to mniej wiecej tak:
przykladowo na zend_db
  1. $pracownicyObj = new Pracownicy_Table();
  2. $pracownik = $pracownicyObj->find(1); //pobierz z bazy pracownika o id 1
  3. $urlopy = $pracownik->getUrlopy(); //pobierz wszystkie urlopy dla pracownika o id 1 (oczywiscie musi byc zaimplementowana w modelu metoda getUrlopy
  4. var_dump($urlopy); //wyswietl te urlopy.


Lub jesli nie chcesz uzywac frameworka (czego nie polecam) to musisz sam sobie zadbac o taki ORMIK.
czyli pobierasz z tabeli pracownicy dane jako tablice wstrzykujesz je w konstruktorze do jakiejs klasy, potem może jakis seter do ustawiania urlopow, jakas fabryka do fabrykowania obiektow itp.
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.