Versio

try catch

Overzicht Reageren

Mr.Moe

Mr.Moe

19/06/2009 12:47:00
Quote Anchor link
ik heb het volgende:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?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?
Gewijzigd op 01/01/1970 01:00:00 door Mr.Moe
 
PHP hulp

PHP hulp

25/05/2012 16:39:06
Gesponsorde koppelingen:
BHosted Hosting al vanaf € 1,- per maand

Controleer nu gratis jouw domeinnaam:

  
 
Joren de Wit
Beheerder

Joren de Wit

19/06/2009 12:50:00
Quote Anchor link
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.
 
Mr.Moe

Mr.Moe

19/06/2009 12:52:00
Quote Anchor link
merci, ik zal het zo eens proberen.
 
Mark PHP

Mark PHP

19/06/2009 13:08:00
Quote Anchor link
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.
Gewijzigd op 01/01/1970 01:00:00 door Mark PHP
 



Overzicht Reageren

Get Adobe Flash player