data = $data; foreach ($contexts as $contextName => $context) { $this->{$contextName} = new $context($this->data); } } } abstract class Panda_DataFilter_Context { protected $data = array(); public function __construct(array $data) { // $this->data = $data; foreach ($data as $key => $value) { $this->{$key} = $value; } } abstract public function __get($name); abstract public function __set($name, $value); } /////////////////////////////////// class MikeG_HtmlFilter extends Panda_DataFilter_Context { private $charset = 'UTF-8'; private $quotes = ENT_COMPAT; public function __get($name) { return htmlentities($this->data[$name], $this->quotes, $this->charset); } public function __set($name, $value) { $this->data[$name] = $value; } public function setCharset($charset) { $this->charset = $charset; } public function setQuoteStyle($quoteStyle) { $this->quotes = $quoteStyle; } } class MikeG_SqlFilter extends Panda_DataFilter_Context { public function __get($name) { return mysql_escape_string($this->data[$name]); } public function __set($name, $value) { $this->data[$name] = $value; } } /////////////////////////////////// $sampleData = array( 'title' => 'Someone & Someone Else', 'content' => 'Someone said to someone else, "Hello, World!"' ); $sampleContexts = array( 'html' => 'MikeG_HtmlFilter', 'sql' => 'MikeG_SqlFilter' ); $Filter = new Panda_DataFilter($sampleData, $sampleContexts); $Filter->html->setCharset('ISO-8859-1'); header('Content-type: text/plain'); print_r($Filter); ?>

html->title ?>

html->content ?>

sql->content ?>