public function getComponents($deep = FALSE, $filterType = NULL)
{
$iterator = new RecursiveComponentIterator($this->components);
if ($deep) {
$deep = $deep > 0 ? \RecursiveIteratorIterator::SELF_FIRST : \RecursiveIteratorIterator::CHILD_FIRST;
$iterator = new \RecursiveIteratorIterator($iterator, $deep);
}
if ($filterType) {
$iterator = new \CallbackFilterIterator($iterator, function ($item) use($filterType) {
return $item instanceof $filterType;
});
}
return $iterator;
}