| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 | <?php namespace System\Routing;class Filter {	/**	 * The loaded route filters.	 *	 * @var array	 */	private static $filters = array();	/**	 * Register a set of route filters.	 *	 * @param  array  $filters	 * @return void	 */	public static function register($filters)	{		static::$filters = array_merge(static::$filters, $filters);	}	/**	 * Clear all of the registered route filters.	 *	 * @return void	 */	public static function clear()	{		static::$filters = array();	}	/**	 * Call a set of route filters.	 *	 * @param  string  $filter	 * @param  array   $parameters	 * @param  bool    $override	 * @return mixed	 */	public static function call($filters, $parameters = array(), $override = false)	{		foreach (explode(', ', $filters) as $filter)		{			if ( ! isset(static::$filters[$filter]))			{				throw new \Exception("Route filter [$filter] is not defined.");									}			$response = call_user_func_array(static::$filters[$filter], $parameters);			// "Before" filters may override the request cycle. For example, an authentication			// filter may redirect a user to a login view if they are not logged in. Because of			// this, we will return the first filter response if overriding is enabled.			if ( ! is_null($response) and $override)			{				return $response;			}		}	}}
 |