protected static method

Executes a set of filters against a method by taking a method's main implementation as a callback, and iteratively wrapping the filters around it.


  • string $class

    Fully namespaced class to apply filters.

  • string|array $method

    The name of the method being executed, or an array containing the name of the class that defined the method, and the method name.

  • array $params

    An associative array containing all the parameters passed into the method.

  • \Closure $callback

    The method's implementation, wrapped in a closure.

  • array $filters

    Additional filters to apply to the method for this call only.




	protected static function _filter($class, $method, $params, $callback, $filters = array()) {
		$hasNoFilters = empty(static::$_methodFilters[$class][$method]);
		if ($hasNoFilters && !$filters && !Filters::hasApplied($class, $method)) {
			return $callback($class, $params, null);
		if (!isset(static::$_methodFilters[$class][$method])) {
			static::$_methodFilters += array($class => array());
			static::$_methodFilters[$class][$method] = array();
		$data = array_merge(static::$_methodFilters[$class][$method], $filters, array($callback));
		return Filters::run($class, $params, compact('data', 'class', 'method'));