Strukturering af PHP klasser

Tags:    php oop mysql mysqli sql

Kære udviklere,

Jeg har kastet mig ud i at bygge et League of Legends relateret website. Der findes ligende websites (LoLSkill.net, LoLKing.net, OP.GG osv.). Mit mål er at opnå bedre performance, hurtigere responstid samt andre pointsystemer mm.

Jeg har allerede opbygget en stor del af websitet, men er gået i stå da jeg ikke føler at struktureringen af min PHP er god nok - og fremtidsdygtig nok.

Så jeg er startet lidt forfra. På nuværende tidspunkt sidder jeg og opbygger nogle klasse-filer, hvor målet er at kunne genbruge for meget kode som muligt - og overholde DRY reglen.

Dog er jeg lidt svag i Objekt-orienteret programmering. Jeg er ikke nybegynder, men jeg kunne sagtens forbedre mig.

Så det jeg spørger om er noget hjælp til hvordan jeg KAN strukturere kode - og hvad der evt. ville være den bedste løsning til mit projekt.

Nu regner jeg ikke med at der er så mange herinde der kender til emnet (League of Legends), så jeg forklarer lige ganske hurtigt hvad der drejer sig om.

Summoners: Det er de brugere der findes i LoL (League of Legends) systemerne.
Active Games: Hvis en summoner er i et aktiv spil skal man have mulighed for at se detaljer om det nuværende spil.
Match History: Man skal have mulighed for at se en summoners seneste kampe/spil i en liste vist i summoneren's side (på websitet).
Ranked Stats: De rangerede games er det man ligger mest vægt på. Derfor skal man kunne se gennemsnits-stats ud fra hver karakter/champion som summoneren har spillet.

Der er mange flere punkter at komme ind på, men det vil jeg ikke gå i detaljer med.

Da League of Legends er et af verdens mest spillede online spil, så har de naturligvis også flere servere/regioner. Derfor kan et summoner navn opstå på flere servere/regioner, og det skal også tjekkes efter.

Eksempel på URL'en ved visning af summoner profil:
www.domæne.dk/summoner/server/summonerName/

I mit eksempel
www.domæne.dk/summoner/EUNE/Von Angelo/

Ved aktivt game:
www.domæne.dk/game/EUNE/Von Angelo/

Når jeg skal hente data fra League of Legends benytter jeg mig af Riot Games API'et, man får udleveret her: http://developer.riotgames.com/

For at tilgå API'et skriver man eksempelvis:
Fold kodeboks ind/udPHP kode 


Eksempel på at få summonerens data:
Fold kodeboks ind/udPHP kode 


Jeg vil gerne benytte mig af DRY reglen, så derfor ønsker jeg gennemgående klasser hvori jeg kan hente data fra forskellige klasser.

Formålet ved mit spørgsmål er at jeg skal have summonerens data til min database - og opdatere hvis der er gået over x-antal sekunder/minutter. Men da der er begrænsning på API'et (med min key) til 10 API-calls per sekund er det en langsom process - og jeg vil derfor gerne formindske antal kald til API'et. Når websitet er færdigt kan jeg få en production key, så jeg kan få begrænsningen sat op til 30 API-calls i sekundet.

Jeg ved at dette er et rigtig langt spørgsmål, men det er heller ikke en lille opgave jeg har sat mig for. Derfor er al henvendelse velkommen. Al hjælp jeg kan få vil hjælpe mig meget!

Hvis der nu skulle være en PHP haj herude der kunne være interesseret i at prøve kræfter af med dette projekt, er du velkommen til at skrive til mig. Det er nemlig et rigtig stort projekt, så derfor er jeg åben for samarbejdspartnere. Du skal bare vide at det er NON-profit, og derfor kan jeg ikke betale dig noget. Dog er jeg helt sikker på at det er en udfordring for alle, og derfor kunne det sikkert være sjovt at arbejde sammen med andre om det her projekt :-)

På forhånd tak for at have læst mit spørgsmål. Jeg håber ikke at du har kedet dig ;-).



2 svar postet i denne tråd vises herunder
0 indlæg har modtaget i alt 0 karma
Sorter efter stemmer Sorter efter dato
Hej Daniele

Det lyder som en ganske stor opgave du har foran dig men det lyder også som et sjovt projekt.

Hvis du vil igang med OOP vil jeg foreslå at du started på denne side http://www.phptherightway.com/pages/Design-Patterns.html og læster om design patterns som vil give dig en god ide om hvor du skal started og hvordan du strukturer det.

At lave koden DRY giver rigtig god mening. Det tager lidt længere tid på den korte bane men tjenes hjem på den lange.



Hej Peter,

Tak for dit svar! Jeg vil kigge nærmere på Design Patterns, og se hvor meget jeg kan lære med det! :)



t