_xmlWriter = new XMLWriter(); // Open temporary storage if ($pTemporaryStorage == self::STORAGE_MEMORY) { $this->_xmlWriter->openMemory(); } else { // Create temporary filename $this->_tempFileName = @tempnam($pTemporaryStorageFolder, 'xml'); // Open storage if ($this->_xmlWriter->openUri($this->_tempFileName) === false) { // Fallback to memory... $this->_xmlWriter->openMemory(); } } // Set default values $this->_xmlWriter->setIndent(true); } /** * Destructor */ public function __destruct() { // Desctruct XMLWriter unset($this->_xmlWriter); // Unlink temporary files if ($this->_tempFileName != '') { @unlink($this->_tempFileName); } } /** * Get written data * * @return $data */ public function getData() { if ($this->_tempFileName == '') { return $this->_xmlWriter->outputMemory(true); } else { $this->_xmlWriter->flush(); return file_get_contents($this->_tempFileName); } } /** * Catch function calls (and pass them to internal XMLWriter) * * @param unknown_type $function * @param unknown_type $args */ public function __call($function, $args) { try { @call_user_func_array(array($this->_xmlWriter, $function), $args); } catch (Exception $ex) { // Do nothing! } } /** * Fallback method for writeRaw, introduced in PHP 5.2 * * @param string $text * @return string */ public function writeRaw($text) { if (isset($this->_xmlWriter) && is_object($this->_xmlWriter) && (method_exists($this->_xmlWriter, 'writeRaw'))) { return $this->_xmlWriter->writeRaw($text); } return $this->text($text); } }