It appears that there is a bug in Zend_Config_Xml when using it without
specific sections ($conf = new Zend_Config_Xml('file.xml', null);).

Since the _toArray() function does not check if the simplexmlobject only
contains a string, an empty Zend_Config obj is returned.
This only happens on the 2nd level element in the xml files as specifying
null in will use the first level elements to extend from.

Examples:

<application>
    <home>../application</home>
    <namespace>
        <foo>foo</foo>
    </namespace>
</application>

$conf->home will return an empty Zend_Config obj not the expected string.
$conf->namespace->foo will return as expected a string.

I simply added an if else to check if the simplexmlobject has children, if
not then return the string.

Zend_Config_Xml
    /**
     * Returns an associative and possibly multidimensional array from a
SimpleXMLElement.
     *
     * @param SimpleXMLElement $xmlObject
     * @return array
     */
    protected function _toArray($xmlObject)
    {
        $config = array();
        if ($xmlObject->children()) {
                        foreach ($xmlObject->children() as $key => $value) {
                                if ($value->children()) {
                                        $config[$key] = $this->_toArray($value);
                                } else {
                                        $config[$key] = (string) $value;
                                }
                        }
        } else {
                        $config = (string) $xmlObject;
        }
        
        return $config;
    }

-- 
View this message in context: 
http://www.nabble.com/BUG--Zend_Config_Xml-tf4704756s16154.html#a13448031
Sent from the Zend Framework mailing list archive at Nabble.com.

Reply via email to