filterer.php 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. <?php namespace Laravel\Routing;
  2. class Filterer {
  3. /**
  4. * All of the route filters for the application.
  5. *
  6. * @var array
  7. */
  8. protected $filters = array();
  9. /**
  10. * Create a new route filterer instance.
  11. *
  12. * @param array $filters
  13. * @return void
  14. */
  15. public function __construct($filters)
  16. {
  17. $this->filters = $filters;
  18. }
  19. /**
  20. * Call a filter or set of filters.
  21. *
  22. * @param array $filters
  23. * @param array $parameters
  24. * @param bool $override
  25. * @return mixed
  26. */
  27. public function filter($filters, $parameters = array(), $override = false)
  28. {
  29. foreach ((array) $filters as $filter)
  30. {
  31. if ( ! isset($this->filters[$filter])) continue;
  32. $response = call_user_func_array($this->filters[$filter], $parameters);
  33. // "Before" filters may override the request cycle. For example, an authentication
  34. // filter may redirect a user to a login view if they are not logged in. Because of
  35. // this, we will return the first filter response if overriding is enabled.
  36. if ( ! is_null($response) and $override) return $response;
  37. }
  38. }
  39. }