Type Rules
Type validation rules check object types and special formats like credit cards.
Rules Reference
Section titled “Rules Reference”| Rule | Parameters | Example | Error Message |
|---|---|---|---|
instanceOf | class | $v->rule('instanceOf', 'field', DateTime::class) | {field} must be an instance of {0} |
creditCard | type?, allowedTypes? | $v->rule('creditCard', 'field') | {field} must be a valid credit card number |
Note: Parameters marked with
?are optional.
Parameter Details
Section titled “Parameter Details”instanceOf
Section titled “instanceOf”The class parameter accepts a class name string or an object instance. Inheritance is respected:
$v->rule('instanceOf', 'obj', BaseClass::class); // ChildClass passescreditCard
Section titled “creditCard”Validates using the Luhn algorithm. Spaces and dashes are stripped automatically.
| Parameter | Type | Description |
|---|---|---|
type | string|array|null | Card type(s) to validate: visa, mastercard, amex, dinersclub, discover |
allowedTypes | array|null | Restrict accepted types when type comes from client |
Supported card types:
| Slug | Card Type | Prefix Pattern |
|---|---|---|
visa | Visa | 4xxx |
mastercard | Mastercard | 51-55, 2221-2720 |
amex | American Express | 34, 37 |
dinersclub | Diners Club | 300-305, 36, 38 |
discover | Discover | 6011, 644-649, 65 |
Examples:
// Any valid card$v->rule('creditCard', 'card_number');
// Specific type$v->rule('creditCard', 'card_number', 'visa');
// Multiple types$v->rule('creditCard', 'card_number', ['visa', 'mastercard']);
// Client-provided type with restrictions$v->rule('creditCard', 'card_number', $clientType, ['visa', 'mastercard']);Complete Examples
Section titled “Complete Examples”Valicomb supports two syntax styles: rule-based (map rules to fields) and field-based (map fields to rules).
Rule-Based Array Syntax
Section titled “Rule-Based Array Syntax”use Frostybee\Valicomb\Validator;
$v = new Validator($data);
$v->rules([ 'instanceOf' => [ ['created_at', \DateTime::class], ['updated_at', \DateTime::class], ['user', User::class], ['logger', \Psr\Log\LoggerInterface::class] ], 'creditCard' => [ ['card_number'], ['backup_card', ['visa', 'mastercard']] ]]);
$v->validate();Field-Based Mapping
Section titled “Field-Based Mapping”use Frostybee\Valicomb\Validator;
$v = new Validator($data);
$v->mapManyFieldsToRules([ 'card_number' => ['required', 'creditCard'], 'visa_card' => ['optional', ['creditCard', 'visa']], 'payment_card' => ['required', ['creditCard', ['visa', 'mastercard', 'amex']]], 'created_at' => ['required', ['instanceOf', \DateTime::class]], 'user' => ['required', ['instanceOf', User::class]], 'config' => ['optional', ['instanceOf', ConfigInterface::class]]]);
$v->validate();