Begin in OOP
Antipattern: The verbose constructor. Daar worden ook alternatieven in besproken. Dan kan je daarna zelf kiezen wat jouw het handigst lijkt.
Over die optionele argumenten voor de constructor: Gewijzigd op 01/01/1970 01:00:00 door Jelmer -
Jelmer schreef op 31.07.2008 15:33:
... vertel dan ook meteen even waarom je echo's en die() buiten de klasse moet houden...
Echo'en en die() binnen een klasse gebruiken is niet handig omdat op die manier je klasse eigenlijk net iets teveel doet. Voorbeeldje: Stel dat jij een query hebt waarvan je weet dat hij wel eens fout zou kunnen gaan, bijvoorbeeld een INSERT in je user-tabel waarbij de gebruikersnaam uniek moet zijn. En je wilt deze fouten afvangen en dan het formulier weer terug op het scherm toveren zodat de nieuwe bezoeker zijn gebruikersnaam kan veranderen in iets anders. Met jouw klasse kan dat op het moment niet omdat hij oordeelt dat je script moet stoppen bij een fout, en de foutmelding op het scherm moet komen. Jij wilt gewoon doorgaan met je script, alleen langs een andere route. En je wilt de gebruiker vertellen dat hij een andere gebruikersnaam moet kiezen, niet de foutmelding van MySQL laten zien.
Daarom is het niet handig om foutenafhandeling op zo'n manier op te lossen binnen je klasse. Handiger is inderdaad om zoals Robert_Deiman al aangeeft 'return' te gebruiken, en bij fouten kan je goed exceptions gebruiken. Exceptions oordelen niet dat dat wat er nu gebeurt fout is, maar dat het niet is wat de klasse verwacht. Het is aan jouw om binnen je code (en buiten de klasse) te oordelen of het ook werkelijk goed fout gaat, of dat de exception te verwachten was.
Echo'en en die() binnen een klasse gebruiken is niet handig omdat op die manier je klasse eigenlijk net iets teveel doet. Voorbeeldje: Stel dat jij een query hebt waarvan je weet dat hij wel eens fout zou kunnen gaan, bijvoorbeeld een INSERT in je user-tabel waarbij de gebruikersnaam uniek moet zijn. En je wilt deze fouten afvangen en dan het formulier weer terug op het scherm toveren zodat de nieuwe bezoeker zijn gebruikersnaam kan veranderen in iets anders. Met jouw klasse kan dat op het moment niet omdat hij oordeelt dat je script moet stoppen bij een fout, en de foutmelding op het scherm moet komen. Jij wilt gewoon doorgaan met je script, alleen langs een andere route. En je wilt de gebruiker vertellen dat hij een andere gebruikersnaam moet kiezen, niet de foutmelding van MySQL laten zien.
Daarom is het niet handig om foutenafhandeling op zo'n manier op te lossen binnen je klasse. Handiger is inderdaad om zoals Robert_Deiman al aangeeft 'return' te gebruiken, en bij fouten kan je goed exceptions gebruiken. Exceptions oordelen niet dat dat wat er nu gebeurt fout is, maar dat het niet is wat de klasse verwacht. Het is aan jouw om binnen je code (en buiten de klasse) te oordelen of het ook werkelijk goed fout gaat, of dat de exception te verwachten was.
thnx voor je info
Maar wat jij zegt over insert dingen. Alles wat ik insert controleer ik of het kan ja of nee. Of er een username bestaat ja of nee etc. Maar dat doe ik dan in mijn registratie class.
Maar iig thnx voor de feedback
(btw sorry voor de late reactie maar was het topic kwijt :/ )