public static function factory($filter)
{
if ($filter instanceof self) {
return $filter;
}
list($filterName, $options) = static::parseFilter($filter);
if (!isset(self::$filters[$filterName])) {
throw new \InvalidArgumentException('Invalid Filter Specified: ' . $filter);
}
$class = self::$filters[$filterName];
return new $class($options);
}