public function render($subject = null, $filter = null, $propertyName = null, $preserveKeys = false, $invert = false, $nullFilter = false)
{
if (null === $subject) {
$subject = $this->renderChildren();
}
if (null === $subject || false === is_array($subject) && false === $subject instanceof \Traversable) {
return [];
}
if (false === (bool) $nullFilter && null === $filter || '' === $filter) {
return $subject;
}
if (true === $subject instanceof \Traversable) {
$subject = iterator_to_array($subject);
}
$items = [];
$invert = (bool) $invert;
$invertFlag = true === $invert ? false : true;
foreach ($subject as $key => $item) {
if ($invertFlag === $this->filter($item, $filter, $propertyName)) {
$items[$key] = $item;
}
}
return true === $preserveKeys ? $items : array_values($items);
}