NestedRules.php 906 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. <?php
  2. namespace Illuminate\Validation;
  3. use Illuminate\Contracts\Validation\CompilableRules;
  4. class NestedRules implements CompilableRules
  5. {
  6. /**
  7. * The callback to execute.
  8. *
  9. * @var callable
  10. */
  11. protected $callback;
  12. /**
  13. * Create a new nested rule instance.
  14. *
  15. * @param callable $callback
  16. */
  17. public function __construct(callable $callback)
  18. {
  19. $this->callback = $callback;
  20. }
  21. /**
  22. * Compile the callback into an array of rules.
  23. *
  24. * @param string $attribute
  25. * @param mixed $value
  26. * @param mixed $data
  27. * @param mixed $context
  28. * @return \stdClass
  29. */
  30. public function compile($attribute, $value, $data = null, $context = null)
  31. {
  32. $rules = call_user_func($this->callback, $value, $attribute, $data, $context);
  33. return Rule::compile($attribute, $rules, $data);
  34. }
  35. }