abstract class ParamHandler { protected $source; protected $params = array(); function __construct( $source ) { $this->source = $source; } function addParam( $key, $val ) { $this->prams[$key] = $val; } function getAllParams() { return $this->params; } static function getInstance( $filename ) { if ( preg_match( "/\.xml$/i", $filename )) { return new XmlParamHandler( $filename ); } return new TextParamHandler( $filename ); } abstract function write(); abstract function read(); }
class XmlParamHandler extends ParamHandler { function write() { // write XML // using $this->params echo "write xml format" . "<br/>"; } function read() { // read XML // and populate $this->prams echo "read xml format" . "<br/>"; } }
class TextParamHandler extends ParamHandler { function write() { // write text // using $this->params echo "write text format" . "<br/>"; } function read() { // read text // and populate $this->prams echo "read text format" . "<br/>"; } }
$test = ParamHandler::getInstance( "./params.xml" ); $test->addParam("key1", "val1" ); $test->addParam("key2", "val2" ); $test->addParam("key3", "val3" ); $test->write(); // writing in XML format $test = ParamHandler::getInstance( "./params.txt" ); $test->read(); // reading in text format
The code is excerpted from “PHP Objects Patters and Practice, Apress, 2010”