Example #1
0
 /**
  * @param string|array|Set $name
  * @param null|string|bool $value
  *
  * @return $this|Element|Tag|Field|Attr
  */
 public function attr($name, $value = null)
 {
     if ($name instanceof Attr) {
         $this->setAttributeNode($name);
         if (Document::ID_ATTR === $name->name) {
             $this->setIdAttributeNode($name, true);
         }
         return $this;
     }
     if ($name instanceof Set) {
         foreach ($name as $a) {
             /** @var $a Attr */
             $this->setAttributeNode($a);
             if (Document::ID_ATTR === $a->name) {
                 $this->setIdAttributeNode($a, true);
             }
         }
         return $this;
     }
     if (!is_null($value)) {
         if (false === $value) {
             $this->removeAttribute($name);
         } else {
             if (true === $value) {
                 $this->setAttribute($name, $name);
             } else {
                 $this->setAttribute($name, (string) $value);
                 if (Document::ID_ATTR === $name) {
                     $this->setIdAttribute($name, true);
                 }
             }
         }
         return $this;
     }
     if (is_array($name)) {
         foreach ($name as $attr => $val) {
             $this->attr($attr, $val);
         }
         return $this;
     }
     $attr = $this->getAttributeNode($name);
     if (!$attr) {
         $attr = $this->ownerDocument->createAttr($name);
     }
     return $attr;
 }