Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Gry via www, a klasy
Forum PHP.pl > Forum > PHP > Object-oriented programming
klima06
Witam!
Obecnie pracuję nad dość zaawansowaną grą internetową przez przeglądarkę. Piszę ją wykorzystując HTML, PHP, AJAX. Obecnie dopiero skończyłem ok. 20% gry i zacząłem się gubić we własnym kodzie. Chcę podejść do tej gry dość profesjonalnie, dlatego zacząłem uczyć się jak tworzy się klasy w php. Chcę wykorzystać trochę napisanego kodu i utworzyć nową wersje gry przy wykorzystaniu klas. Czy klasy przy takiej grze to dobry pomysł? Macie może jakieś rady związane z grami via www? Wszystkie dane będę przechowywać w bazie MySQL. Dla każdego elementu gry powinienem stworzyć oddzielną klasę?
gac3k
Jak dla mnie obiektowe podejście to w takim wypadku jedyne podejście. Natomiast sam fakt nauczenia się obiektów-ki niestety nie uczyni twojej aplikacji profesjonalną, co więcej może przynieść w twoim przypadku więcej problemów niż pożytku. Zacznij od czegoś prostego klasa listująca katalog, klasa zarządzająca użytkownikami, czy do obsługi bazy danych. Później poczytaj o wzorcach projektowych, zastanów się nad użyciem jakiegoś frameworka. I przede wszystkim przemyśl wszystko jeszcze raz. Żeby za miesiąc znów nie zaczynać od nowa.
ShadowD
Przejdź na framweork proponuję zend'a. Próbowałem bez fw napisać coś ogromnego kilka razy, za każdym razem zaczynałem od zera - bo coś się dało lepiej napisać lub trzeba było przenieść, a teraz fw każe mi się trzymać jakiejś konwencji i to robię, za pierwszym razem przepisałem cms'a i poszło, dodatkowo powiem, że jestem zadowolony jak nigdy :-)
klima06
Obecnie na studiach mam programowanie obiektowe ale w Javie i myślę jakby zastosować programowanie obiektowe w php. Dzięki za wszystkie rady, zabieram się za lekturę o Framework'ach wink.gif
LSM
Czytaj czytaj i jeszcze raz czytaj. Mniej tego z forum, a więcej blogów i książek. Poświęc na samo czytanie tydzień lub dwa. Jeśli przestaniesz programować i przeczytasz przez dwa tygodnie wiele różnych informacji o OOP, wiele Ci się rozjaśni. Skup się również na refaktoryzacji. Jak przerobisz teorię - i popatrzysz na swój kod odrazu powinieneś być w stanie wyciągnąć te fragmenty, które stanowią jakąś odrębność. Spróbuj też pobawić się długopisem i kartką. Wszystko co wpadnie Ci do głowy określaj za pomocą Klas. Jeśli w grze masz Bohatera, Pojazd, Budynek, Trawe, Rzeke, Miecz, Statek kosmiczny, Planete a nawet czynność jak Poruszanie, Predkosc - zrób z nich klasy. Zobaczysz co i jaki ma sens i jak zmieni się sposób wykorzystania tych elementów tylko dlatego że opakowałeś to w nową strukturę. To tylko początek, ale zaczniesz widzieć na czym polega obiektowość. Zapoznaj się też z pojęciem "metafor" w Extreme Programming. Zacznij myśleć abstrakcyjnie - czyli nie myśl o funkcjach substr(), mysql_connect(), ale o wytnijLancuch() polaczMnieZbaza() ... implementacja niskopoziomowa to już pikuś polegający na zajrzeniu do dokumentacji. Naucz się myśleć w oderwaniu od języka programowania - jakiegokolwiek, nabierzesz podstaw myślenia obiektowego. businesssmiley.png
jaworr
Zaczynać przygodę z frameworkami polecam od Kohana, Zend może na początku wydawać się zbyt skomplikowany. Zresztą są różne gusta.
Uriziel01
Klasy przy takim projekcie to jedyny słuszny tak na prawdę pomysł. Początkowo FW mogą przerażać Cie składnia jeżeli wcześniej nie pisałeś kodu OOP, więc najlepiej zacznij tworzyć proste klasy i baw się dowolnie ich konstrukcja, sprobuj napisać własny dispatcher/router, posprawdzaj czy dasz radę napisać jakąś klase obsługi requestów czy cos podobnego, tak na prawde to nie ma znaczenia co dokładnie napiszesz, to ma być tylko wdrożenie w zasady pisania OOP. Ogólnie poczatkowo nie będzie ci to raczej zbyt dobrze wychodzić, ale z biegiem czasu powinieneś nabrać wprawy, wtedy śmiało już zacznij pisać w dowolnym FW.
daniel1302
Ja wiem, z doświadczenia, że framework musi być, lecz najlepiej napisać swój. Gry viawww są specyficznym typem aplikacji(nakierowane na bardzo dużą wydajność[szczególnie te w PHP i Ajax]) to znane framewroki nastręczają tylko problemów. Ja używam własnego, najbardziej do gustu przypadł mi Zend, miałem z nim kilka problemów lecz ani razu nie musiałem pisać postu na forum, bo rozwiązania wszystkich problemów chyba zostały już podane.

Jeśli jest ci wygodnie pisać w frameworku to go używaj, jeśli nie to nie i tyle. Niektórzy próbują na siłe pisać w jakimś frameworku. Tak jak ja próbowałem na siłę uczyć sie Symfony 2 lecz wydawało mi się tak nie logiczne(szczególnie Routing), że zrobiłem sobie przerwę w PHP(2 miesiące).
LSM
Pisanie we frameworkach tych znanych mija się z celem jeśli chodzi o osiągnięcie dużej wydajności. Samo PHP nie jest zbyt wydajne, jest jeszcze coś takiego jak HipHop: hiphop - wikipedia - to co zastosowali we Facebook. Ponoć rewelacyjnie przyspiesza działanie PHP.
IceManSpy
Na ten moment nie martwiłbym się wydajnością. Jeśli gra zdobędzie popularność to można myśleć o optymalizacji kodu. Z tego co mi się wydaje, to allegro jest napisane z użyciem Symfony i jakoś daje radęsmile.gif
LSM
Napisane być i może ale niewiadomo jakie i ile mają serwerów + baz danych smile.gif Jeśli więc idzie o tą gre - zacząłbym od podstaw, potem przepisanie gry może być problematyczne ale nie musi - wsio zależy ot jak leży i jak to zakodujesz. A jeśli chodzi o ZF vs wydajność to bym uciekał jak od ognia.
IceManSpy
Wszystko zależy co gra ma robić, ile requestów będzie wymagać i jaka ma być docelowa ilość userów. Jeśli chce mieć ich dużo, to raczej powinien myśleć na VPSem albo dedykiem, a nie hostngiem za 5 zł miesięcznie smile.gif
Ale to już decyzja piszącego.
klima06
Wielkie dzięki dla wszystkich, którzy się wypowiedzieli w tym temacie. Od czasu napisania tego tematu sporo czytałem i na początku miałem problemy ze zrozumieniem całego modelu MVC, ale znalazłem parę angielskich artykułów na ten temat, które dobrze wyjaśniły sytuację. Samo tworzenie klas i relację miedzy nimi mam juz nieco opanowane. Postanowiłem napisać jakby swój własny framework, ponieważ chcę się jak najwięcej nauczyć.

Jak wygląda moja aplikacja obecnie:
Wszystkie połączenia przekierowuje do mojego routera, czyli index.php, który wyciąga z adresu np. www.xxxx.pl/kontroler/metoda/zmienna. Potem ten router tworzy obiekt klasy Application, w której ładowany jest pierw kontroler (kontroler jest klasą dziedziczną po Application), później model, obierane dane z modelu są i ładowane do widoku. Wszystko działa cacy jak strona jest dość łatwa, ale trafiłem na problem.

Jak zrobić rejestrację, czyli żeby dane przekazywane były w $_POST[]? Jeszcze bardziej mi się to komplikuje jak w sidebarze mam formularz do logowania się który znajduje się na wszystkich podstronach.

Trochę chaotycznie to opisałem, ale nie potrafię tego lepiej wyjaśnić wink.gif
CuteOne
1. Dlaczego router tworzy Application? Dla każdego requestu masz jego osobną klasę? Jeżeli nie to Router powinien być osobną klasą utworzoną wewnątrz App. (lub gdzieś dalej smile.gif)
2. Application powinien być singletonem (znaczy to tyle, że powinna istnieć jego jedna instancja) - nie ma sensu dziedziczyć (czyt. powtórnie inicjować) tego wszystkiego co zawiera.
3. Poczytaj o danych zawartych w tablicy $_SERVER i REQUEST_URI - na pewno ci się przyda smile.gif

"Jeszcze bardziej mi się to komplikuje jak w sidebarze mam formularz do logowania się który znajduje się na wszystkich podstronach."
A dokładnie to w czym problem?

Jak na początkującego dobrze Ci idzie smile.gif oby tak dalej.

ps. warto czasem rzucić okiem na gotowe rozwiązania (nie wymyślać koła na nowo) np. Kohana, Zend, CI
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.