'; case self::sibling: return '~'; case self::anotherSelector: return ', '; case self::anyDescendant: return ' '; } } public function __construct() { } public function notEmpty() { return !empty($element) && !empty($id) && !empty($classes) && !empty($combinator) && !empty($attributes) && !empty($pseudoClasses) && !empty($pseudoElements) ; } public function __tostring() { $buffer = array(); try { if (!empty($this->ns)) { $buffer[] = $this->ns; $buffer[] = '|'; } if (!empty($this->element)) $buffer[] = $this->element; if (!empty($this->id)) $buffer[] = '#' . $this->id; if (!empty($this->attributes)) { foreach ($this->attributes as $attr) { $buffer[] = '['; if(!empty($attr['ns'])) $buffer[] = $attr['ns'] . '|'; $buffer[] = $attr['name']; if (!empty($attr['value'])) { $buffer[] = self::attributeOperator($attr['op']); $buffer[] = $attr['value']; } $buffer[] = ']'; } } if (!empty($this->pseudoClasses)) { foreach ($this->pseudoClasses as $ps) { $buffer[] = ':' . $ps['name']; if (isset($ps['value'])) { $buffer[] = '(' . $ps['value'] . ')'; } } } foreach ($this->pseudoElements as $pe) { $buffer[] = '::' . $pe; } if (!empty($this->combinator)) { $buffer[] = self::combinatorOperator($this->combinator); } } catch (\Exception $e) { return $e->getMessage(); } return implode('', $buffer); } }