Ik ga er van uit dat de functie LoadItem($nr) nu een Nieuwsitem terug geeft.
Echter krijg ik een error op de regel:
$item = mysql_fetch_object($query, "Nieuwsitem");
Zat blijkbaar nog een ander klein foutje in mijn geposte code. Blijkbaar is het niet mogelijk om
__construct(..., $datum = date("Y-m-d"), ...); te doen (er mogen geen haken gebruikt worden binnen de constructor).
Dit was makkelijk te omzeilen, maar ik heb wel nog steeds de error die ik bedoelde, namelijk: Warning: Missing argument 1 for Nieuwsitem::__construct() in C:\xampp\htdocs\files\PHP\Nieuwsitem.class.php on line 9
Die warning krijg ik twee keer (voor $titel en $bericht), iedere keer dat ik een bericht laad.
Volgens mij worden er door mysql_fetch_object geen argumenten aan de constructor mee gegeven. Het enige dat het doet is een nieuwe instance maken en daar dan van buitenaf de variabelen in zetten.
Volgens mij worden er door mysql_fetch_object geen argumenten aan de constructor mee gegeven. Het enige dat het doet is een nieuwe instance maken en daar dan van buitenaf de variabelen in zetten.
Dit vermoeden kreeg ik inderdaad ook al. Het zou wel jammer zijn als dit zo is want dan moet ik dus een andere fetch gebruiken en voor iedere record zelf de klasse instantieren.
Dit had ik al begrepen. Volgens php.net was het ook mogelijk om zelf op te geven wat voor object je wil (wat voor klasse je wilt hebben).
Het is mij echter niet duidelijk wat het nut is van mysql_fetch_object
Het lijkt namelijk wel zo dat, indien ik dit wil gebruiken, ik al mijn variabelen public moet gaan maken (waarvan ik ook nog niet eens zeker weet of het werkt). Daarbij verlies ik dan de beperkingen die ik nu wil opleggen
params
An optional array of parameters to pass to the constructor for class_name objects.
Nu ontvangt je constructor ook de benodigde parameters, en zal de error van missing arguments weg zijn denk ik
---
Ooh, even verkeerd gelezen wat er precies moest gebeuren..
--- EDIT
Ik heb er even mee getest. Wat PHP doet is de geselecteerde kolommen invullen als membervariabelen, en daarna de constructor aanroepen (met eventuele parameters die jij kan meegeven). Wat er dus gebeurd is, PHP vult de membervariabelen in, en roept de constructer aan (met de parameters uit het 3e argument). Omdat je dan nog niet weet welke waardes je selectie heeft, kan je dus alleen lege waardes meegegeven en dergelijke. De ingevulde membervariabelen worden dus weer overschreven door de contructor. Ik heb het uiteindelijk opgelost (eigen code, moet je maar even kijken) met een setter.
Je kan het, bedenk ik me nu, ook oplossen, door een check in je contructor in te bouwen die kijkt of de default waarde is ingevoerd, en zoja, dat hij hem niet verandert..