[ Index ] |
PHP Cross Reference of DokuWiki |
[Summary view] [Print] [Text view]
1 <?php 2 3 /* 4 * This file is part of the Symfony package. 5 * 6 * (c) Fabien Potencier <fabien@symfony.com> 7 * 8 * For the full copyright and license information, please view the LICENSE 9 * file that was distributed with this source code. 10 */ 11 12 namespace Symfony\Component\CssSelector\Node; 13 14 /** 15 * Represents a "<selector>[<namespace>|<attribute> <operator> <value>]" node. 16 * 17 * This component is a port of the Python cssselect library, 18 * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. 19 * 20 * @author Jean-François Simon <jeanfrancois.simon@sensiolabs.com> 21 * 22 * @internal 23 */ 24 class AttributeNode extends AbstractNode 25 { 26 private $selector; 27 private $namespace; 28 private $attribute; 29 private $operator; 30 private $value; 31 32 public function __construct(NodeInterface $selector, ?string $namespace, string $attribute, string $operator, ?string $value) 33 { 34 $this->selector = $selector; 35 $this->namespace = $namespace; 36 $this->attribute = $attribute; 37 $this->operator = $operator; 38 $this->value = $value; 39 } 40 41 public function getSelector(): NodeInterface 42 { 43 return $this->selector; 44 } 45 46 public function getNamespace(): ?string 47 { 48 return $this->namespace; 49 } 50 51 public function getAttribute(): string 52 { 53 return $this->attribute; 54 } 55 56 public function getOperator(): string 57 { 58 return $this->operator; 59 } 60 61 public function getValue(): ?string 62 { 63 return $this->value; 64 } 65 66 /** 67 * {@inheritdoc} 68 */ 69 public function getSpecificity(): Specificity 70 { 71 return $this->selector->getSpecificity()->plus(new Specificity(0, 1, 0)); 72 } 73 74 public function __toString(): string 75 { 76 $attribute = $this->namespace ? $this->namespace.'|'.$this->attribute : $this->attribute; 77 78 return 'exists' === $this->operator 79 ? sprintf('%s[%s[%s]]', $this->getNodeName(), $this->selector, $attribute) 80 : sprintf("%s[%s[%s %s '%s']]", $this->getNodeName(), $this->selector, $attribute, $this->operator, $this->value); 81 } 82 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body