< – Inhaltsverzeichnis – >
Das Filter Interface und die Chain-Klasse, wir bedienen uns dabei dem Composite Pattern. Ich stelle hier auch noch 2 Beispiel Filter zur Verfügung(uhhhh, wie großzügig :D)
- FW_Filter_Interface:
/** (c) 2010 Arne "w13531" Wenzel [ mailto: w13531 (at) terrorhippiecrew (dot) net ] **/ interface FW_Filter_Interface { public function execute(FW_Http_Request $request, FW_Http_Response $response); } - FW_Filter_Chain:
/** (c) 2010 Arne "w13531" Wenzel [ mailto: w13531 (at) terrorhippiecrew (dot) net ] **/ class FW_Filter_Chain extends FW_Object implements FW_Filter_Interface { private $filters = array(); public function addFilter(FW_Filter_Interface $filter) { $this->filters[] = $filter; } public function execute(FW_Http_Request $req, FW_Http_Response $res) { foreach($this->filters as $filter) { $filter->execute($req, $res); } } } - FW_GZip_Filter:
/** (c) 2010 Arne "w13531" Wenzel [ mailto: w13531 (at) terrorhippiecrew (dot) net ] **/ class FW_GZip_Filter implements FW_Filter_Interface { public function execute(FW_Http_Request $request, FW_Http_Response $response) { if($request->getHeader('accept_encoding') && strpos($request->getHeader('accept_encoding'), 'gzip') !== false) { $txt = $response->getContent(); if(DEVELOPMENT_ENVIRONMENT == false) { $response->addHeader('Content-Encoding', 'gzip'); $txt = gzencode($txt, 9); } $response->replaceContent($txt); } } } - FW_Headers_Filter:
/** (c) 2010 Arne "w13531" Wenzel [ mailto: w13531 (at) terrorhippiecrew (dot) net ] **/ class FW_Headers_Filter implements FW_Filter_Interface { public function execute(FW_Http_Request $request, FW_Http_Response $response) { $response->addHeader('X-Powered-By', 'RIAD-F'); $response->addHeader('Server', 'RIAD-F Application Server'); } }