Symfony\Component\CssSelector\XPath
XPathExpr{} WC 1.0
XPath expression translator interface.
This component is a port of the Python cssselect library, which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect.
Хуков нет.
Возвращает
Null. Ничего.
Использование
$XPathExpr = new XPathExpr();
// use class methods
Методы
- __construct($path = '', $element = '*', $condition = '', $starPrefix = false)
- __toString()
- addCondition($condition)
- addNameTest()
- addStarPrefix()
- getCondition()
- getElement()
- join($combiner, XPathExpr $expr)
Код XPathExpr{} XPathExpr{}
WC 5.0.0
<?php
class XPathExpr
{
/**
* @var string
*/
private $path;
/**
* @var string
*/
private $element;
/**
* @var string
*/
private $condition;
/**
* @param string $path
* @param string $element
* @param string $condition
* @param bool $starPrefix
*/
public function __construct($path = '', $element = '*', $condition = '', $starPrefix = false)
{
$this->path = $path;
$this->element = $element;
$this->condition = $condition;
if ($starPrefix) {
$this->addStarPrefix();
}
}
/**
* @return string
*/
public function getElement()
{
return $this->element;
}
/**
* @param $condition
*
* @return $this
*/
public function addCondition($condition)
{
$this->condition = $this->condition ? sprintf('%s and (%s)', $this->condition, $condition) : $condition;
return $this;
}
/**
* @return string
*/
public function getCondition()
{
return $this->condition;
}
/**
* @return $this
*/
public function addNameTest()
{
if ('*' !== $this->element) {
$this->addCondition('name() = '.Translator::getXpathLiteral($this->element));
$this->element = '*';
}
return $this;
}
/**
* @return $this
*/
public function addStarPrefix()
{
$this->path .= '*/';
return $this;
}
/**
* Joins another XPathExpr with a combiner.
*
* @param string $combiner
* @param XPathExpr $expr
*
* @return $this
*/
public function join($combiner, XPathExpr $expr)
{
$path = $this->__toString().$combiner;
if ('*/' !== $expr->path) {
$path .= $expr->path;
}
$this->path = $path;
$this->element = $expr->element;
$this->condition = $expr->condition;
return $this;
}
/**
* @return string
*/
public function __toString()
{
$path = $this->path.$this->element;
$condition = null === $this->condition || '' === $this->condition ? '' : '['.$this->condition.']';
return $path.$condition;
}
}