Smarty 3 en Exceptions

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

- Ariën  -
Beheerder

- Ariën -

19/04/2011 15:54:10
Quote Anchor link
Sons kort ben ik overgestapt van een Smarty 2.0-fork naar Smarty 3 en viel me het volgende op:

Smarty 3 lijkt een exception te throwen zodra er een fout ontstaat, zoals een niet-bestaande template oproepen.

Nu heb ik zelf een eigen standaard exceptionhandler gebouwd:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
set_exception_handler('error_handler');

function
error_handler($e){
global $tpl;

include "inc/errors.inc.php";

$tpl->assign('title',"Error");
$tpl->assign('refferer',$_SERVER['HTTP_REFERER']);
    if (array_key_exists($e->getMessage(), $errors)) {
        $tpl->assign('error_key',$e->getMessage());
        $tpl->assign('error',$errors[$e->getMessage()]);
    }
else {
        $tpl->assign('error_key', "unexpected_error"); // how could we get the key from a var. ??
        $tpl->assign('error',$errors['unexpected_error']);
    }

$tpl->display('error.tpl');
}

?>


En de manier hoe ik een error throw is als volgt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
try {
    if($a == $b) {
        throw new Exception('traintype_not_exists');
    }
}
catch(Exception $e) {
    error_handler($e);
}

?>


Nu was mijn vraag, kan ik Smarty ook laten weten om een andere exception-handler te gaan gebruiken?
Gewijzigd op 19/04/2011 17:45:38 door - Ariën -
 
PHP hulp

PHP hulp

26/04/2024 04:53:40
 
Jelmer -

Jelmer -

19/04/2011 16:15:35
Quote Anchor link
Je kan tijdelijk van exception handler wisselen, of een exception handler maken die onderscheid maakt tussen Smarty exceptions en andere exceptions, en dan de juiste echte exception handler aanroept.

Maar ik snap niet precies wat je wilt bereiken denk ik. Waarom gebruik je een catch-blok om vervolgens de standaard (de fallback!) exception handler aan te roepen die zou worden aangeroepen wanneer je de exception niet opving? En waarom heb je een aparte handler nodig voor smarty? Maw: welk probleem probeer je op te lossen?
 
- Ariën  -
Beheerder

- Ariën -

19/04/2011 17:44:22
Quote Anchor link
De huidige standard handler is puur om foutmeldingen uit mijn CMS te tonen, zoals pagina's die niet bestaan. Ik throw dan een error_string (bijv. traintype_not_exists) waarmee ik dan bijv. te zien krijg "Deze treinsoort bestaat niet.".

Maar ja, Smarty throwed niet zulke errors, en ik zit te denken aan twee soorten handlers. Een normale en een SystemHandler, die extra dingen afhandeld bij system-kritieke fouten (zoals mailen).

Dus ik wil Smarty daarom dus een aparte eexception-handler geven. Enig idee of dat kan?

Toevoeging op 20/04/2011 16:58:43:

Schopje... :-)
 
- Ariën  -
Beheerder

- Ariën -

22/04/2011 11:51:44
Quote Anchor link
Schop...
 
- Ariën  -
Beheerder

- Ariën -

28/04/2011 09:41:48
Quote Anchor link
Schop?
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.