|
14 | 14 | use DragonCode\CardNumber\Validators\Banks\DinersClub; |
15 | 15 | use DragonCode\CardNumber\Validators\Banks\Discovery; |
16 | 16 | use DragonCode\CardNumber\Validators\Banks\Forbrugsforeningen; |
17 | | -use DragonCode\CardNumber\Validators\Banks\HiperCard; |
| 17 | +use DragonCode\CardNumber\Validators\Banks\HiperCardValidator; |
18 | 18 | use DragonCode\CardNumber\Validators\Banks\Jcb; |
19 | 19 | use DragonCode\CardNumber\Validators\Banks\Maestro; |
20 | | -use DragonCode\CardNumber\Validators\Banks\MasterCard; |
| 20 | +use DragonCode\CardNumber\Validators\Banks\MasterCardValidator; |
21 | 21 | use DragonCode\CardNumber\Validators\Banks\Mir; |
22 | 22 | use DragonCode\CardNumber\Validators\Banks\Troy; |
23 | 23 | use DragonCode\CardNumber\Validators\Banks\UnionPay; |
24 | 24 | use DragonCode\CardNumber\Validators\Banks\Visa; |
25 | 25 | use DragonCode\CardNumber\Validators\Banks\VisaElectron; |
26 | | -use DragonCode\CardNumber\Validators\DefaultCard; |
| 26 | +use DragonCode\CardNumber\Validators\CardValidator; |
| 27 | +use DragonCode\CardNumber\Validators\DefaultCardValidator; |
27 | 28 | use DragonCode\CardNumber\Validators\Loyalty\Chars; |
28 | 29 | use DragonCode\CardNumber\Validators\Loyalty\RalfRinger; |
29 | 30 | use DragonCode\CardNumber\Validators\Loyalty\YvesRocher; |
30 | 31 |
|
| 32 | +use function is_a; |
| 33 | + |
31 | 34 | class CardNumber |
32 | 35 | { |
33 | 36 | public static function isValid(int|string $number, CardType|string|null $cardType = null): bool |
34 | 37 | { |
| 38 | + if (is_a($cardType, CardValidator::class, true)) { |
| 39 | + return $cardType::isValid($number); |
| 40 | + } |
| 41 | + |
35 | 42 | return match (static::detectCardType($cardType)) { |
36 | 43 | CardType::americanExpress => AmericanExpress::isValid($number), |
37 | 44 | CardType::chars => Chars::isValid($number), |
38 | 45 | CardType::dankort => Dankort::isValid($number), |
39 | 46 | CardType::dinersClub => DinersClub::isValid($number), |
40 | 47 | CardType::discovery => Discovery::isValid($number), |
41 | 48 | CardType::forbrugsforeningen => Forbrugsforeningen::isValid($number), |
42 | | - CardType::hiperCard => HiperCard::isValid($number), |
| 49 | + CardType::hiperCard => HiperCardValidator::isValid($number), |
43 | 50 | CardType::jcb => Jcb::isValid($number), |
44 | 51 | CardType::maestro => Maestro::isValid($number), |
45 | | - CardType::masterCard => MasterCard::isValid($number), |
| 52 | + CardType::masterCard => MasterCardValidator::isValid($number), |
46 | 53 | CardType::mir => Mir::isValid($number), |
47 | 54 | CardType::ralfRinger => RalfRinger::isValid($number), |
48 | 55 | CardType::troy => Troy::isValid($number), |
49 | 56 | CardType::unionPay => UnionPay::isValid($number), |
50 | 57 | CardType::visa => Visa::isValid($number), |
51 | 58 | CardType::visaElectron => VisaElectron::isValid($number), |
52 | 59 | CardType::yvesRocher => YvesRocher::isValid($number), |
53 | | - default => DefaultCard::isValid($number) |
| 60 | + default => DefaultCardValidator::isValid($number) |
54 | 61 | }; |
55 | 62 | } |
56 | 63 |
|
|
0 commit comments