Ik ben al een tijdje met PHP aan het prutsen en ken de achtergrond van OOP vanuit mijn C++ theorie. Ik zit echter met een twijfel geval:
Je wilt vanuit PHP optimalisatie technisch zo min mogelijk query's naar een database doen en toch je code zo goed mogelijk OO-houden. Wat is hiervoor dé manier:
Manier 1: Classes zijn 1:1 handlers van de database:
Bij elke get en set wordt de database aangeroepen: Dit valt natuurlijk al snel af omdat dit niet optimaal is. Wel garandeerd het dat een object altijd gelijk is aan zijn representatie in de database.
Manier 2: Classes worden gevuld door het object waar ze in leven:
Neem als voorbeeld een object bibliotheek. Wil men een object boek dan doet roept men op het object bibliotheek getBoek(x) aan wat dan het object retourneerd. Bij het retourneren is er geen garantie op goede actuele data en geen koppeling naar de database meer. Als er dus wijzingen worden gedaan op het object moeten deze later worden weggeschreven. Dit kan dan door de bibliotheek of het boek gebeuren? Logische wijs als bibliotheek leest zal deze ook moeten schrijven.
Manier 3: Classes worden gevuld door een handler.
Een boek kan worden aangeroepen door getBoek op de handler uit te voeren. Ook wegschrijven wordt afgehandeld door de classes.
Naar mijn idee is manier 3 de netste oplossing maar de vraag is of jullie die mening met mij delen.
Je wilt vanuit PHP optimalisatie technisch zo min mogelijk query's naar een database doen en toch je code zo goed mogelijk OO-houden. Wat is hiervoor dé manier:
Manier 1: Classes zijn 1:1 handlers van de database:
Bij elke get en set wordt de database aangeroepen: Dit valt natuurlijk al snel af omdat dit niet optimaal is. Wel garandeerd het dat een object altijd gelijk is aan zijn representatie in de database.
Manier 2: Classes worden gevuld door het object waar ze in leven:
Neem als voorbeeld een object bibliotheek. Wil men een object boek dan doet roept men op het object bibliotheek getBoek(x) aan wat dan het object retourneerd. Bij het retourneren is er geen garantie op goede actuele data en geen koppeling naar de database meer. Als er dus wijzingen worden gedaan op het object moeten deze later worden weggeschreven. Dit kan dan door de bibliotheek of het boek gebeuren? Logische wijs als bibliotheek leest zal deze ook moeten schrijven.
Manier 3: Classes worden gevuld door een handler.
Een boek kan worden aangeroepen door getBoek op de handler uit te voeren. Ook wegschrijven wordt afgehandeld door de classes.
Naar mijn idee is manier 3 de netste oplossing maar de vraag is of jullie die mening met mij delen.