![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 48 Pomógł: 10 Dołączył: 21.10.2011 Skąd: UK / PL Ostrzeżenie: (0%) ![]() ![]() |
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ę? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 90 Pomógł: 8 Dołączył: 28.07.2009 Ostrzeżenie: (0%) ![]() ![]() |
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.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 333 Pomógł: 137 Dołączył: 25.03.2008 Skąd: jesteś?? Ostrzeżenie: (0%) ![]() ![]() |
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 :-)
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 48 Pomógł: 10 Dołączył: 21.10.2011 Skąd: UK / PL Ostrzeżenie: (0%) ![]() ![]() |
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 (IMG:style_emoticons/default/wink.gif)
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 64 Pomógł: 6 Dołączył: 20.03.2011 Skąd: Świdnica Ostrzeżenie: (0%) ![]() ![]() |
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. (IMG:style_emoticons/default/businesssmiley.png)
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 27 Pomógł: 5 Dołączył: 29.09.2010 Ostrzeżenie: (0%) ![]() ![]() |
Zaczynać przygodę z frameworkami polecam od Kohana, Zend może na początku wydawać się zbyt skomplikowany. Zresztą są różne gusta.
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 307 Pomógł: 37 Dołączył: 9.11.2010 Skąd: Zielona Góra Ostrzeżenie: (0%) ![]() ![]() |
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.
Ten post edytował Uriziel01 2.12.2011, 14:47:03 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 602 Pomógł: 30 Dołączył: 1.08.2007 Skąd: Nowy Sącz Ostrzeżenie: (0%) ![]() ![]() |
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). |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 64 Pomógł: 6 Dołączył: 20.03.2011 Skąd: Świdnica Ostrzeżenie: (0%) ![]() ![]() |
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.
Ten post edytował LSM 4.12.2011, 14:25:04 |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 1 006 Pomógł: 111 Dołączył: 23.07.2010 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
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ę(IMG:style_emoticons/default/smile.gif)
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 64 Pomógł: 6 Dołączył: 20.03.2011 Skąd: Świdnica Ostrzeżenie: (0%) ![]() ![]() |
Napisane być i może ale niewiadomo jakie i ile mają serwerów + baz danych (IMG:style_emoticons/default/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.
Ten post edytował LSM 4.12.2011, 14:37:01 |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 1 006 Pomógł: 111 Dołączył: 23.07.2010 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
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 (IMG:style_emoticons/default/smile.gif)
Ale to już decyzja piszącego. |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 48 Pomógł: 10 Dołączył: 21.10.2011 Skąd: UK / PL Ostrzeżenie: (0%) ![]() ![]() |
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ć (IMG:style_emoticons/default/wink.gif) |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 2 958 Pomógł: 574 Dołączył: 23.09.2008 Skąd: wiesz, że tu jestem? Ostrzeżenie: (0%) ![]() ![]() |
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 (IMG:style_emoticons/default/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 (IMG:style_emoticons/default/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 (IMG:style_emoticons/default/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 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 06:28 |