filter.php 984 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. <?php namespace System;
  2. class Filter {
  3. /**
  4. * The loaded route filters.
  5. *
  6. * @var array
  7. */
  8. public static $filters;
  9. /**
  10. * Call a set of route filters.
  11. *
  12. * @param string $filter
  13. * @param array $parameters
  14. * @return mixed
  15. */
  16. public static function call($filters, $parameters = array())
  17. {
  18. if (is_null(static::$filters))
  19. {
  20. static::$filters = require APP_PATH.'filters'.EXT;
  21. }
  22. foreach (explode(', ', $filters) as $filter)
  23. {
  24. if ( ! isset(static::$filters[$filter]))
  25. {
  26. throw new \Exception("Route filter [$filter] is not defined.");
  27. }
  28. $response = call_user_func_array(static::$filters[$filter], $parameters);
  29. // --------------------------------------------------------------
  30. // If the filter returned a response, return it since route
  31. // filters can override route methods.
  32. // --------------------------------------------------------------
  33. if ( ! is_null($response))
  34. {
  35. return $response;
  36. }
  37. }
  38. }
  39. }