Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Duża ilość instrukcji warunkowych. jak przejść na OOP?, obiektowo, php, klasa, funkcje, problem
daro2323
post 22.08.2013, 16:33:39
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 20.04.2009

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


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:)
Go to the top of the page
+Quote Post
Fluke
post 23.08.2013, 07:45:49
Post #2





Grupa: Zarejestrowani
Postów: 247
Pomógł: 9
Dołączył: 20.09.2010
Skąd: Kraków

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


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
Go to the top of the page
+Quote Post
daro2323
post 23.08.2013, 08:16:24
Post #3





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 20.04.2009

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


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ć.
Go to the top of the page
+Quote Post
Crozin
post 23.08.2013, 09:19:58
Post #4





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


@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).
Go to the top of the page
+Quote Post
daro2323
post 23.08.2013, 09:47:58
Post #5





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 20.04.2009

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


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.
Go to the top of the page
+Quote Post
tczajka
post 26.08.2013, 22:10:37
Post #6





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 23.07.2013

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


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?
Go to the top of the page
+Quote Post
Crozin
post 27.08.2013, 10:16:12
Post #7





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


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.
Go to the top of the page
+Quote Post
tczajka
post 27.08.2013, 14:59:17
Post #8





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 23.07.2013

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


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.
Go to the top of the page
+Quote Post
Crozin
post 27.08.2013, 15:36:41
Post #9





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Jak już wspomniałem, zainteresuj się projektami ORM-ów, z Doctrine na czele.
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 Wersja Lo-Fi Aktualny czas: 20.06.2025 - 13:04