Ik heb een vraagje naar het in de praktijk brengen van verschillende klassen. In deze tutorial van markkaz ( http://development.blog.markkazemier.nl/2009/06/introductie-oop-gastenboek-bouwen/ ) wordt uitgelegd hoe je een OO gastenboek schrijft. Mijn vraag is nu, hoe breng je dit nu in de praktijk? Is het niet zo dat je dan procedurele code moet toepassen, zoals in dit geval:
Wouw,, je kan al zelf nadenken..
Met PHP ontsnap je niet aan procedurele code.
Uiteindelijk moet het altijd vanuit een file worden aangeroepen.
Dus je index.php zal er zoiets uitzien denk ik:
(niet getest)
@steen,
Opzich wel,, maar aan de andere kant,,
Gebruiker is nu een soort controller van de reactie.
Opzich klopt het wel,,
Je bent zelf een gebruiker,,
JIJ plaatst de reactie.
Deze reactie doet simpelweg het gastenboek aanroepen en een reactie plaatsen.
Het kan dus wel.
Maar ik had zelf ook een andere manier gekozen.
Maar met OOP is er niet één goede manier,, zijn er veel meer,,
En nog veel meer foute manieren.
@Nico: ik ben het met steen eens, reactie_plaatsen() hoort geen method van de Gebruiker class te zijn. In de uitleg zoals jij hem geeft beschouw je een Gebruiker object niet zoals je zou moeten doen. Het Gebruiker object is alleen verantwoordelijk voor zichzelf en kan alleen zijn eigen eigenschappen beïnvloeden. Hij heeft er geen idee van hoe een bericht geplaatst moet worden...
@Nico: ik ben het met steen eens, reactie_plaatsen() hoort geen method van de Gebruiker class te zijn. In de uitleg zoals jij hem geeft beschouw je een Gebruiker object niet zoals je zou moeten doen. Het Gebruiker object is alleen verantwoordelijk voor zichzelf en kan alleen zijn eigen eigenschappen beïnvloeden. Hij heeft er geen idee van hoe een bericht geplaatst moet worden...
Daar ben ik het mee eens. Ik heb geprobeerd dit op te lossen, is de manier waarop ik dit doe juist?
Ik heb het toevoegen van een reactie een static functie gemaakt van Reactie, omdat ik niet het idee heb dat dit bij Gebruiker hoort.. Het werkt wel, maar is het juist wat ik doe?
Nee, die static method staat daar absoluut niet gelukkig. Dit kun je al zien aan de parameters die geaccepteerd worden, een Gebruiker en een Gastenboek. Van die twee hoor een Reactie niets te weten en laat staan dat hij weet hoe hij ermee om hoort te gaan.
Het zou veel logischer zijn om de reactiePlaatsen() method van je Gastenboek class te gebruiken en die een Reactie en Gebruiker als parameter te laten accepteren. Het Gastenboek weet immers wel dat er een Reactie en Gebruiker moeten zijn en je kunt je ook voorstellen dat het Gastenboek weet hoe e.e.a. opgeslagen moet worden.