ik heb het volgende:

<?php
	try{
		$check->validate('email', $_POST['email']);
		$check->validate('url', $_POST['url']);		
	}
	catch(Exception $e){
		echo $e->getMessage();
	}
?>


Momenteel krijg ik enkel de fout van email terug als ik beide velden fout invul, en dit is uiteraard niet de bedoeling.
Is het mogelijk om dit met 1 try catch te doen? of moet ik voor elke validatie een aparte try catch maken?
Zodra er in een try blok een exception gegooid wordt, wordt de uitvoer direct gestopt en wordt er verder gegaan met het catch gedeelte.

Wat je bijvoorbeeld zou kunnen doen is de validate() method geen exception laten gooien maar in plaats daarvan een foutmelding laten toevoegen aan een member $aErrors. Na al je controles zou je dan een method checkErrors() aan kunnen roepen die een exception gooit zodra $aErrors niet leeg is. Als je laatste zou je dan in je catch blok een method getErrors() aan kunnen roepen waarmee je alle foutmeldingen ophaalt en die vervolgens verwerkt.
merci, ik zal het zo eens proberen.
Persoonlijk vind ik het gebruik van exceptions in dit specifieke geval niet nodig. Als validate() false teruggeeft, zou je simpel getErrors() kunnen aanroepen om de gegenereerde foutmeldingen weer te geven.

Hiermee kan je bijvoorbeeld ook iets afkeuren zonder een foutmelding te geven (misschien niet logisch, maar het kan wel).

EDIT: na nog een keer lezen gaat dit hier niet werken. Voor de bovenstaande oplossing zal je iets met het Observer pattern moeten doen.

Reageren