Esempio n. 1
0
 public function matches(Element $element)
 {
     if ($this->name && $this->name !== '*' && $element->getName() !== $this->name) {
         return false;
     }
     if ($this->id && (!$element->hasId() || $element->getId() !== $this->id)) {
         return false;
     }
     if (!empty($this->classes)) {
         foreach ($this->classes as $class) {
             if (!$element->hasClass($class)) {
                 return false;
             }
         }
     }
     if (!empty($attributes)) {
         foreach ($attributes as $name => $value) {
             if (!$element->hasAttribute($name)) {
                 return false;
             }
             if ($value !== null && $element->getAttribute($name) !== $value) {
                 return false;
             }
         }
     }
     if (!empty($this->pseudos)) {
         foreach ($this->pseudos as $name => $value) {
             if (!array_key_exists($name, self::$registeredPseudos)) {
                 throw new Exception("Failed to resolve selector: Pseudo {$name} doesnt exist");
             }
             $idx = $element->getIndex();
             if (!call_user_func(self::$registeredPseudos[$name], $value, $element, $idx)) {
                 return false;
             }
         }
     }
     return true;
 }