Ce post a été importé depuis mon ancien blog, il se peut donc qu’il y ait des erreurs d’affichage.
Vous développez une application avec le framework PHP symfony ? Vous voulez exécuter du code avant ou après toute action sur un module ? C’est possible !
Voici votre module à l’heure actuelle :
<php class moduleActions extends sfActions
{
public function executeIndex()
{
…
}
public function executeList()
{
…
}
}
?>
Nous avons donc deux actions : Index et List. Vous savez déjà que vous pouvez créer d’autres fonctions pour pouvoir vous en servir. Pour exécuter du code avant l’exécution de Index ou de List, il suffit de créer une méthode preExecute. Pour exécuter du code après l’exécution du code de votre actions, c’est la même opération, mais avec…postExecute ! Voici ce que cela donne :
<?php
class moduleActions extends sfActions
{
public function preExecute()
{
// Le code ici s’exécutera avant le code présent dans “execute…”
}
public function executeIndex()
{
…
}
public function executeList()
{
…
}
public function postExecute()
{
// Le code ici s’exécutera avant le code présent dans “execute…”
}
}
?>
A plein de choses :). Voici cependant un exemple concret qui peut vous servir dans vos développements. symfony permet de créer facilement et rapidement des API utilisant le “protocole” REST. Cependant, en mode développement, cela ne fonctionne pas, tout simplement parce que le framework retourne le code XML suivi du code JavaScript de la barre de débogage, le fichier XML est donc inutilisable. Pour palier ce problème, il suffit, pour le module contenant l’API, de ne jamais l’exécuter en mode de débogage, y compris quand on est dans ce mode !
public function preExecute()
{
sfConfig::set(’sf_web_debug‘, false);
}