for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
declare(strict_types=1);
namespace Yiisoft\Validator\Rule;
use Closure;
use JetBrains\PhpStorm\ArrayShape;
use Yiisoft\Validator\ParametrizedRuleInterface;
use Yiisoft\Validator\BeforeValidationInterface;
use Yiisoft\Validator\Rule\Trait\HandlerClassNameTrait;
use Yiisoft\Validator\Rule\Trait\BeforeValidationTrait;
use Yiisoft\Validator\Rule\Trait\RuleNameTrait;
use Yiisoft\Validator\ValidationContext;
final class Callback implements ParametrizedRuleInterface, BeforeValidationInterface
{
use BeforeValidationTrait;
use HandlerClassNameTrait;
use RuleNameTrait;
public function __construct(
/**
* @var callable
*/
private $callback,
private bool $skipOnEmpty = false,
private bool $skipOnError = false,
* @var Closure(mixed, ValidationContext):bool|null
private ?Closure $when = null,
) {
}
* @return callable
public function getCallback(): callable
return $this->callback;
#[ArrayShape(['skipOnEmpty' => 'bool', 'skipOnError' => 'bool'])]
public function getOptions(): array
return [
'skipOnEmpty' => $this->skipOnEmpty,
'skipOnError' => $this->skipOnError,
];