48 lines
1.1 KiB
PHP
48 lines
1.1 KiB
PHP
<?php
|
|
|
|
namespace Illuminate\Validation\Rules;
|
|
|
|
use Closure;
|
|
use InvalidArgumentException;
|
|
use Stringable;
|
|
|
|
class ProhibitedIf implements Stringable
|
|
{
|
|
/**
|
|
* The condition that validates the attribute.
|
|
*
|
|
* @var (\Closure(): bool)|bool
|
|
*/
|
|
public $condition;
|
|
|
|
/**
|
|
* Create a new prohibited validation rule based on a condition.
|
|
*
|
|
* @param (\Closure(): bool)|bool $condition
|
|
*
|
|
* @throws \InvalidArgumentException
|
|
*/
|
|
public function __construct($condition)
|
|
{
|
|
if ($condition instanceof Closure || is_bool($condition)) {
|
|
$this->condition = $condition;
|
|
} else {
|
|
throw new InvalidArgumentException('The provided condition must be a callable or boolean.');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Convert the rule to a validation string.
|
|
*
|
|
* @return string
|
|
*/
|
|
public function __toString()
|
|
{
|
|
if (is_callable($this->condition)) {
|
|
return call_user_func($this->condition) ? 'prohibited' : '';
|
|
}
|
|
|
|
return $this->condition ? 'prohibited' : '';
|
|
}
|
|
}
|