The 2008-11-07 at 08:19 by Loïc d'Anterroches filed under Pluf - Framework en PHP5.
Une des merveilles de Pluf est le système de middleware qui permet de traiter une requête et sa réponse.
Par exemple, je peux faire un middleware qui va remplacer toutes les occurrences de Sarkozy dans les réponses par Le Petit Nicolas.
class MyApp_Middleware
{
function process_response($request, $response)
{
// On ne traite que certains codes de réponse
if (!in_array($response->status_code,
array(200, 201, 202, 203, 204, 205, 206, 404, 501))) {
return $response;
}
// Et uniquement le code html.
$ok = false;
$cts = array('text/html', 'text/html', 'application/xhtml+xml');
foreach ($cts as $ct) {
if (false !== strripos($response->headers['Content-Type'], $ct)) {
$ok = true;
break;
}
}
if ($ok == false) {
return $response;
}
// On fait le changement
$response->content = str_replace('Sarkozy', 'Le Petit Nicolas',
$response->content);
return $response;
}
}
Le code est simple et clair. Maintenant pour activer ce middleware, il suffit dans votre fichier de configuration d’ajouter ce middleware, vous pourriez avoir par exemple :
$cfg['middleware_classes'] = array(
'Pluf_Middleware_Session',
'MyApp_Middleware',
'Pluf_Middleware_Translation',
);
Donc, je disais, si vous utilisez Google Analytics, vous pouvez simplement chargez le middleware Pluf_Middleware_GoogleAnalytics à la fin de la liste et ajouter à votre fichier de configuration le code pour votre site :
$cfg['google_analytics_id'] = 'UA-123456-7';
Cela fera automatiquement l’insertion du code JavaScript en bas de page, vous pouvez voir le résultat sur la forge de Céondo.
Comments from readers
Luigi said:
Et quand est-ce que tu nous sors une version de Google Analytics en libre ;o) ? Quoique c'est sans doute pas une bonne idée, faudrait déjà voir plus que le bout du nez de Plume 2 avant ;o)
Loïc said:
J'apprends beaucoup en ce moment, en fait, développer un framework et des applications l'utilisant est très formateur. InDefero, puis my.ceondo.com ces derniers jours (pour mes clients) me permettent de mieux penser Plume 2.
C'est dans l'hiver 2001/2002 que j'ai créé la première version de Plume. Peut-être le moment de profiter d'un nouvel hiver.
Sinon, pour Plume 2, je suis toujours en interrogation par rapport à l'approche. Dois-je aller dans la direction "administration automatique à la Django" ou Plume 1 avec une interface vraiment dédiée au CMS ? Au début, je pensais l'approche Django comme étant la meilleure, maintenant, je ne le pense plus, mais je me demande toujours comment gérer de multiples types de ressources avec élégance.