Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Duża ilość instrukcji warunkowych. jak przejść na OOP?
Forum PHP.pl > Forum > PHP
daro2323
Witam
napisałem pewien serwis strukturalnie i strasznie to wygląda nie mogę się w tym teraz połapać, niby działa ale żeby coś poprawić trzeba się nieźle nagłowić. chciałbym to przepisać na OOP znam teoretyczne podstay OOP php5, ale chciałbym poznać metodykę napisania poniższej klasy.

interakcja ma wyglądać tak że:

-użytkownik zaprasza innego użytkownika,
- zapraszany otrzymuje powiadomienie o tym i może odrzucić albo zaakcptować.
- po zaakceptowaniu użytkownik zapraszający dostaje powiadomienie po niezaakcepotowaniu też.
- na następny etapie użytkownik który wyszedł z inicjatywą zaproszenia ma możliwość zaproszenia do najlepszych znajomych.
i tak samo drugi dostaje powiadomienie może odrzucić albo przyjąć. taki schemat etapowy.

proszę o pomoc, jakie klasy trzeba napisać, jakie funkcje w tych klasach itp. każda informacja będzie pomocja i może się czegoś nauczę

z góry dzięki pozdro:)
Fluke
Polecam Ci zapoznać się z jakimś frameworkiem, np: Symfony, Zend oraz ORM`em np: Doctrine.
Myślę, że jak znasz podstawy OOP to spokojnie możesz zaprojektować klasy bądź klasę do twojego schematu

Pozdrawiam smile.gif
daro2323
Fluke czytaj ze zrozumieniem, bo utrudniasz.
1. framework jest schematem witryny więc nic nie da zastosowanie go w nietypowym problemie. bez sensu pomysł.
2. to że wiem jak zbudować klasę to nie znaczy że sens obiektowości będzie zachowany.

chce opis jakie klasy stworzyć i co ma się w nich znajdować.
Crozin
@daro2323: Odpowiedź @Fluke była całkiem sensowna jak na początek.

1. Żeby pisać w OOP, trzeba to robić w środowisku OOP, a PHP samo w sobie nie udostępnia absolutnie nic w tej kwestii. Stąd użycie FW, który by to zapewnił jest bardzo dobrym posunięciem.
2. Żeby pisać w OOP, trzeba mieć obiekty, nad którymi się pracuje, a te muszą mieć sensowną budowę z punktu widzenia OOP. Bazy danych takowych nie udostępniają dlatego też będziesz potrzebował ORM-a/ODM-a/innego OxM-a żeby dane z bazy przetworzyć na obiekty.
3. Proces, o którym piszesz jest już dosyć złożony i będzie angażować dziesiątki obiektów (w większości nieinteresujących z Twojego punktu widzenia, udostępnianych przez inne biblioteki - ich zadaniem będzie jedynie umożliwienie wykonania tego zadania przez Ciebie).
4. Żeby odpisać Ci szczegółowo jak takich schemat miałby wyglądać musiałbym wiedzieć w jakim środowisku pracujesz - a i tak zapewne byłby to tylko schemat ogólny.

Będziesz potrzebować raptem dwóch obiektów domeny:
1. Użytkownik - id, email/nazwa
2. Zaproszenie - id, użytkownikZapraszający, użytkownikZapraszany, status (oczekuje(null)/przyjęte/odrzucone), rodzaj (zwykłe/najlepszy znajomy)

Schemat działania jest prosty - już go właściwie opisałeś.
1. W jakiś sposób wyszukujesz sobie zapraszanegoUżytkownika.
2. Tworzysz obiekt Zaproszenie, z właściwościami początkowymi: użytkownikZapraszający = aktualnie zalogowany użytkownik, użytkownikZapraszany = użytkownik z pkt. 1
3. Zapisujesz to w bazie.

Inny użytkownik po zalogowaniu:
1. Pobiera sobie listę zaproszeń gdzie jest on adresatem, a ich status jest "oczekujący"
2. Klikając na jakieś przyciski "zaakceptuj"/"odrzuć" wypełnia formularz, który aktualizuje obiekt zaproszenia (jedynie właściwość status).
daro2323
o to chodziło dzięki, trochę mi to rozjaśniło, postaram się w oparciu o to zrobić klasy. co do FM pisałem że chodzi mi o metodykę rozwiązania obiektowego tego problemu więc środowisko FM nie jest narazie istotne.
tczajka
Cytat(Crozin @ 23.08.2013, 10:19:58 ) *
Będziesz potrzebować raptem dwóch obiektów domeny:


@Crozin, użyłeś sformułowania "obiektów domeny", masz na myśli użycie wzorca Domain model? Jak taki wzorzec wygląda?
Crozin
Tak, miałem na myśli domain model, jednak to nie jest wzorzec, a na wiki masz to całkiem konkretnie wyjaśnione. Jeżeli chciałbyś zobaczyć jakieś konkretne przykłady, sprawdź chociażby dokumentację Doctrine.
tczajka
ok, z tego co doczytałem domain model w praktyce nie ma w sumie nic wspólnego z bazą danych. Jak zatem teraz dokonywać najlepiej operacji zapisu w bazie tak przygotowanych danych? Przepraszam za może laickie pytania ale też nie mam doświadczenia w oop (co właśnie staram się zmienić ucząc się). Chodzi mi tu ew. wskazanie kierunku, czego mam szukać by pożenić domain model z operacjami na bazie.
Crozin
Jak już wspomniałem, zainteresuj się projektami ORM-ów, z Doctrine na czele.
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.