} } class TextParamHandler extends ParamHandler { function write() { echo "Запись текста"; } function read() { echo "Чтение текста"; } } $filename = "text.xml"; // файл $test = ParamHandler::getInstance($filename); // получаем объект в зависимости от имени файла $test->addParam("Key1", "Val1"); // добавляем параметры $test->addParam("Key2", "Val2"); $test->write(); // записываем $test->read(); // читаем var_dump($test); //-----------------------процедурный подход------------------------------------------------- function readParams($source) { $params = []; if (preg_match("/xml/", $source)) { echo "читаем XML";
return new TextParamHandler($filename); } abstract function write(); abstract function read(); } class XmlParamHandler extends ParamHandler { function write() { $string = <<<XML <?xml version='1.0' encoding='utf-8'?> <article></article> XML; $xml = simplexml_load_string($string); foreach ($this->params as $key => $val) { $xml->addChild($key, $val); } file_put_contents($this->source, $xml->asXML()); } function read() { $sxe = new SimpleXMLElement($this->source, null, true); echo $sxe->asXML(); } } $test = ParamHandler::getInstance("params.xml"); $test->addParam("key1", "val1"); $test->addParam("key2", "val2"); $test->addParam("key3", "val3"); $test->write(); $test->read();