1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- <?php
-
- namespace Illuminate\Validation;
-
- use Illuminate\Contracts\Validation\Rule as RuleContract;
-
- class ClosureValidationRule implements RuleContract
- {
- /**
- * The callback that validates the attribute.
- *
- * @var \Closure
- */
- public $callback;
-
- /**
- * Indicates if the validation callback failed.
- *
- * @var bool
- */
- public $failed = false;
-
- /**
- * The validation error message.
- *
- * @var string|null
- */
- public $message;
-
- /**
- * Create a new Closure based validation rule.
- *
- * @param \Closure $callback
- * @return void
- */
- public function __construct($callback)
- {
- $this->callback = $callback;
- }
-
- /**
- * Determine if the validation rule passes.
- *
- * @param string $attribute
- * @param mixed $value
- * @return bool
- */
- public function passes($attribute, $value)
- {
- $this->failed = false;
-
- $this->callback->__invoke($attribute, $value, function ($message) {
- $this->failed = true;
-
- $this->message = $message;
- });
-
- return ! $this->failed;
- }
-
- /**
- * Get the validation error message.
- *
- * @return string
- */
- public function message()
- {
- return $this->message;
- }
- }
|