[Crawler] Add proper validation of node argument of method add
This commit is contained in:
parent
a7608d9115
commit
41805c042d
@ -58,7 +58,9 @@ class Crawler extends \SplObjectStorage
|
||||
* This method uses the appropriate specialized add*() method based
|
||||
* on the type of the argument.
|
||||
*
|
||||
* @param null|\DOMNodeList|array|\DOMNode $node A node
|
||||
* @param \DOMNodeList|\DOMNode|array|string|null $node A node
|
||||
*
|
||||
* @throws \InvalidArgumentException When node is not the expected type.
|
||||
*
|
||||
* @api
|
||||
*/
|
||||
@ -66,12 +68,19 @@ class Crawler extends \SplObjectStorage
|
||||
{
|
||||
if ($node instanceof \DOMNodeList) {
|
||||
$this->addNodeList($node);
|
||||
} elseif ($node instanceof \DOMNode) {
|
||||
$this->addNode($node);
|
||||
} elseif (is_array($node)) {
|
||||
$this->addNodes($node);
|
||||
} elseif (is_string($node)) {
|
||||
$this->addContent($node);
|
||||
} elseif (is_object($node)) {
|
||||
$this->addNode($node);
|
||||
} elseif ($node !== null) {
|
||||
throw new \InvalidArgumentException(
|
||||
sprintf(
|
||||
'Expecting node to be DOMNodeList|DOMNode|array|string|null, but got %s',
|
||||
(is_object($node)) ? get_class($node) : gettype($node)
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -53,6 +53,15 @@ class CrawlerTest extends \PHPUnit_Framework_TestCase
|
||||
$this->assertEquals('Foo', $crawler->filterXPath('//body')->text(), '->add() adds nodes from a string');
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException \InvalidArgumentException
|
||||
*/
|
||||
public function testAddInvalidNode()
|
||||
{
|
||||
$crawler = new Crawler();
|
||||
$crawler->add(1);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers Symfony\Component\DomCrawler\Crawler::addHtmlContent
|
||||
*/
|
||||
|
Reference in New Issue
Block a user