Skip to content

Commit

Permalink
Change to Bailable contract
Browse files Browse the repository at this point in the history
  • Loading branch information
peterfox committed Feb 25, 2025
1 parent 72d96e1 commit c9d0367
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 26 deletions.
5 changes: 5 additions & 0 deletions src/Illuminate/Contracts/Validation/Bailable.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<?php

namespace Illuminate\Contracts\Validation;

interface Bailable {}
13 changes: 0 additions & 13 deletions src/Illuminate/Contracts/Validation/StopUponFailure.php

This file was deleted.

6 changes: 3 additions & 3 deletions src/Illuminate/Validation/Validator.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
use Illuminate\Contracts\Validation\DataAwareRule;
use Illuminate\Contracts\Validation\ImplicitRule;
use Illuminate\Contracts\Validation\Rule as RuleContract;
use Illuminate\Contracts\Validation\StopUponFailure;
use Illuminate\Contracts\Validation\Bailable;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Contracts\Validation\Validator as ValidatorContract;
use Illuminate\Contracts\Validation\ValidatorAwareRule;
Expand Down Expand Up @@ -922,8 +922,8 @@ protected function shouldStopValidating($attribute, $rule)
return $this->messages->has($cleanedAttribute);
}

if ($rule instanceof InvokableValidationRule && $rule->invokable() instanceof StopUponFailure) {
return $rule->invokable()->shouldStop();
if ($rule instanceof InvokableValidationRule && $rule->invokable() instanceof Bailable) {
return true;
}

if (isset($this->failedRules[$cleanedAttribute]) &&
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,38 +3,33 @@
namespace Illuminate\Tests\Validation;

use Closure;
use Illuminate\Contracts\Validation\StopUponFailure;
use Illuminate\Contracts\Validation\Bailable;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Translation\ArrayLoader;
use Illuminate\Translation\Translator;
use Illuminate\Validation\Validator;
use PHPUnit\Framework\TestCase;

class ValidationStopOnFailureTest extends TestCase
class ValidationRuleWithBailableTest extends TestCase
{
public function testFailingStopsFurtherValidation()
{
$trans = new Translator(new ArrayLoader, 'en');
$v = new Validator(
$trans,
['foo' => 'foobar'],
['foo' => [new StoppingValidationRule(), 'numeric']],
['foo' => [new BailableValidationRule(), 'numeric']],
);
$this->assertFalse($v->passes());
$this->assertEquals(
['foo' => ['Illuminate\Tests\Validation\StoppingValidationRule' => []]],
['foo' => ['Illuminate\Tests\Validation\BailableValidationRule' => []]],
$v->failed()
);
}
}

class StoppingValidationRule implements ValidationRule, StopUponFailure
class BailableValidationRule implements ValidationRule, Bailable
{
public function shouldStop(): bool
{
return true;
}

public function validate(string $attribute, mixed $value, Closure $fail): void
{
$fail('failed');
Expand Down

0 comments on commit c9d0367

Please sign in to comment.