Ejemplo n.º 1
0
 /**
  * Method to test getAttribute().
  *
  * @return void
  *
  * @covers Windwalker\Dom\SimpleXml\XmlHelper::getAttribute
  */
 public function testGetAttribute()
 {
     $this->assertEquals('sun', XmlHelper::getAttribute($this->xml, 'class'));
     $this->assertEquals('default', XmlHelper::getAttribute($this->xml, 'cloud', 'default'));
     $this->assertEquals(null, XmlHelper::getAttribute($this->xml, 'cloud'));
 }
Ejemplo n.º 2
0
 /**
  * prepareOptions
  *
  * @param string|\SimpleXMLElement $xml
  * @param Option[]                 $options
  *
  * @throws \InvalidArgumentException
  * @return  void
  */
 protected function handleOptions($xml, $options = array())
 {
     if ($xml instanceof \SimpleXMLElement) {
         foreach ($xml->children() as $name => $option) {
             if ($option->getName() == 'optgroup') {
                 foreach ($option->children() as $opt) {
                     $attributes = XmlHelper::getAttributes($opt);
                     $opt = new Option((string) $opt, XmlHelper::getAttribute($opt, 'value'), $attributes);
                     $this->options[XmlHelper::getAttribute($option, 'label')][] = $opt;
                 }
             } else {
                 $attributes = XmlHelper::getAttributes($option);
                 $option = new Option((string) $option, XmlHelper::getAttribute($option, 'value'), $attributes);
                 $this->options[] = $option;
             }
         }
     } else {
         foreach ($options as $name => $option) {
             // If is array, means it is group
             if (is_array($option)) {
                 foreach ($option as $opt) {
                     if (!$opt instanceof Option) {
                         throw new \InvalidArgumentException(sprintf('Please give me %s class as option, %s given.', 'Windwalker\\Html\\Option', get_class($opt)));
                     }
                 }
             } else {
                 if (!$option instanceof Option) {
                     throw new \InvalidArgumentException(sprintf('Please give me %s class as option, %s given.', 'Windwalker\\Html\\Option', get_class($option)));
                 }
             }
             if (is_numeric($name)) {
                 $this->options[] = $option;
             } else {
                 $this->options[$name] = $option;
             }
         }
     }
 }