public function filter($filter)
{
if (is_callable($filter)) {
$output = array();
foreach ($this as $comment) {
if ($filter($comment)) {
$output[] = $comment;
}
}
return new Comments($output);
} elseif (is_array($filter)) {
$filters = $filter;
$filter = function ($item) use($filters) {
$output = false;
foreach ($filters as $filter) {
$output = $output || $item->{$filter};
}
return $output;
};
return $this->filter($filter);
} else {
return $this;
}
}