Ik me gister even een beetje in OOP bediept en uiteindelijk mijn eerste gastenboek in elkaar geknutselt.
Hij werkt, dat is al een positief punt, ik wil hem alleen graag even hier laten zien zodat de meer ervaren OOP mensen er wat commentaar op kunnen geven aangezien ik zelf nogal weinig ervaring heb met OOP.
Ik heb twee classes:
een mysql class, voor de connectie, selectie en query e.d
en de guestbook class, voor het gastenbook (who would have guessed)
Gooi de mysql class weg. Het is slechts een simpele wrapper van de mysql extensie van php. Gebruik gewoon de OOP methode van de mysqli of de PDO extensie. Deze class beperkt je alleen maar in je mogelijkheden.
Ik zou je properties (variabelen) van je Gastenboek class protected maken ipv private. Zo kan je later de Gasteboek class nog een keer extenden om extra mogelijkheden toe te voegen.
Bij get_pages() zou je bijvoorbeeld wel eerst kunnen controleren of $this->pages werkelijk is geset. Zo niet kan je eerst set_pages() aanroepen.
Je zou het bijvoorbeeld zou kunnen maken dat je set_pages niet in je constructor aanroept, maar bij de eerste keer dat je get_pages() aanroept. Stel nou dat nooit get_pages() wordt aangeroepen, wordt dus ook niet een extra query uitgevoerd.
set_pages() vind ik trouwens wel niet perfect gekozen. Bij een 'set' method verwacht je dat je een parameter kunt meegeven om een bepaalde property van je class een bepaalde waarde mee te geven. fetch_page_count() zou ik handiger vinden.
Je zou van $this->entriesPerPage; een public property kunnen maken zodat je later het aantal entries per pagina kunt aanpassen. Het zou nog mooier zijn als je die property protected houdt, en hem met een set method kunt setten.
Verder is het een leuk script! Het is natuurlijk nog niet écht OOP omdat je nog weinig met objecten werkt. Dan zou je van elke entry bijvoorbeeld een apart object (class) kunnen maken. met bijvoorbeeld de methods getAuthor(), getLength(), setMessage() die het bericht met een mysql query aanpast, etc.
Oke! Thanks Arjan, op dat soort posts zit ik te wachten!
Ik denk dus dat die mysql class de deur uit gaat. Dan maar met PDO aan de gang.
Wat je zegt over get_pages(), set_pages() en $entriesPerPage klopt wel, en die dingetjes kan ik ook makkelijk aanpassen.
Even over dat extenden: ik welke situatie kan ik het beste een nieuwe class aanmaken (dus guestbook extenden) en in welke situatie kan ik het beste gewoon een paar methods toevoegen aan de guestbook class?
En over een object per entry, hoe kan ik dat het beste doen?
Ik ga even aan de gang met je tips, hartstikke bedankt!