diff options
Diffstat (limited to 'libs/Zend/Config/Writer/Xml.php')
-rw-r--r-- | libs/Zend/Config/Writer/Xml.php | 131 |
1 files changed, 27 insertions, 104 deletions
diff --git a/libs/Zend/Config/Writer/Xml.php b/libs/Zend/Config/Writer/Xml.php index 764b461ded..7b779d63af 100644 --- a/libs/Zend/Config/Writer/Xml.php +++ b/libs/Zend/Config/Writer/Xml.php @@ -14,107 +14,41 @@ * * @category Zend * @package Zend_Config - * @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com) + * @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com) * @license http://framework.zend.com/license/new-bsd New BSD License - * @version $Id: Xml.php 16924 2009-07-21 16:34:04Z dasprid $ + * @version $Id: Xml.php 20096 2010-01-06 02:05:09Z bkarwin $ */ /** * @see Zend_Config_Writer */ -require_once 'Zend/Config/Writer.php'; +// require_once 'Zend/Config/Writer/FileAbstract.php'; /** * @see Zend_Config_Xml */ -require_once 'Zend/Config/Xml.php'; +// require_once 'Zend/Config/Xml.php'; /** * @category Zend * @package Zend_Config - * @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com) + * @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com) * @license http://framework.zend.com/license/new-bsd New BSD License */ -class Zend_Config_Writer_Xml extends Zend_Config_Writer +class Zend_Config_Writer_Xml extends Zend_Config_Writer_FileAbstract { /** - * Filename to write to + * Render a Zend_Config into a XML config string. * - * @var string + * @since 1.10 + * @return string */ - protected $_filename = null; - - /** - * Wether to exclusively lock the file or not - * - * @var boolean - */ - protected $_exclusiveLock = false; - - /** - * Set the target filename - * - * @param string $filename - * @return Zend_Config_Writer_Xml - */ - public function setFilename($filename) - { - $this->_filename = $filename; - - return $this; - } - - /** - * Set wether to exclusively lock the file or not - * - * @param boolean $exclusiveLock - * @return Zend_Config_Writer_Array - */ - public function setExclusiveLock($exclusiveLock) + public function render() { - $this->_exclusiveLock = $exclusiveLock; - - return $this; - } - - /** - * Defined by Zend_Config_Writer - * - * @param string $filename - * @param Zend_Config $config - * @param boolean $exclusiveLock - * @throws Zend_Config_Exception When filename was not set - * @throws Zend_Config_Exception When filename is not writable - * @return void - */ - public function write($filename = null, Zend_Config $config = null, $exclusiveLock = null) - { - if ($filename !== null) { - $this->setFilename($filename); - } - - if ($config !== null) { - $this->setConfig($config); - } - - if ($exclusiveLock !== null) { - $this->setExclusiveLock($exclusiveLock); - } - - if ($this->_filename === null) { - require_once 'Zend/Config/Exception.php'; - throw new Zend_Config_Exception('No filename was set'); - } - - if ($this->_config === null) { - require_once 'Zend/Config/Exception.php'; - throw new Zend_Config_Exception('No config was set'); - } - $xml = new SimpleXMLElement('<zend-config xmlns:zf="' . Zend_Config_Xml::XML_NAMESPACE . '"/>'); $extends = $this->_config->getExtends(); $sectionName = $this->_config->getSectionName(); - + if (is_string($sectionName)) { $child = $xml->addChild($sectionName); @@ -125,35 +59,24 @@ class Zend_Config_Writer_Xml extends Zend_Config_Writer $xml->addChild($sectionName, (string) $data); } else { $child = $xml->addChild($sectionName); - + if (isset($extends[$sectionName])) { $child->addAttribute('zf:extends', $extends[$sectionName], Zend_Config_Xml::XML_NAMESPACE); } - + $this->_addBranch($data, $child, $xml); } } } - + $dom = dom_import_simplexml($xml)->ownerDocument; $dom->formatOutput = true; - + $xmlString = $dom->saveXML(); - - $flags = 0; - - if ($this->_exclusiveLock) { - $flags |= LOCK_EX; - } - - $result = @file_put_contents($this->_filename, $xmlString, $flags); - - if ($result === false) { - require_once 'Zend/Config/Exception.php'; - throw new Zend_Config_Exception('Could not write to file "' . $this->_filename . '"'); - } + + return $xmlString; } - + /** * Add a branch to an XML object recursively * @@ -165,35 +88,35 @@ class Zend_Config_Writer_Xml extends Zend_Config_Writer protected function _addBranch(Zend_Config $config, SimpleXMLElement $xml, SimpleXMLElement $parent) { $branchType = null; - + foreach ($config as $key => $value) { if ($branchType === null) { if (is_numeric($key)) { $branchType = 'numeric'; $branchName = $xml->getName(); $xml = $parent; - + unset($parent->{$branchName}); } else { $branchType = 'string'; } } else if ($branchType !== (is_numeric($key) ? 'numeric' : 'string')) { - require_once 'Zend/Config/Exception.php'; - throw new Zend_Config_Exception('Mixing of string and numeric keys is not allowed'); + // require_once 'Zend/Config/Exception.php'; + throw new Zend_Config_Exception('Mixing of string and numeric keys is not allowed'); } - + if ($branchType === 'numeric') { if ($value instanceof Zend_Config) { - $child = $parent->addChild($branchName, (string) $value); - + $child = $parent->addChild($branchName); + $this->_addBranch($value, $child, $parent); } else { $parent->addChild($branchName, (string) $value); } - } else { + } else { if ($value instanceof Zend_Config) { $child = $xml->addChild($key); - + $this->_addBranch($value, $child, $xml); } else { $xml->addChild($key, (string) $value); |