Skip to content

Commit 7822902

Browse files
Merge pull request #10 from TheDragonCode/1.x
Added `Yves Rocher` and `Ralf Ringer` card types
2 parents b390034 + 289d015 commit 7822902

23 files changed

+253
-18
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,10 +90,12 @@ List of available card types:
9090
| Maestro | `maestro` | `DragonCode\CardNumber\Enums\CardType::maestro` |
9191
| MasterCard | `mastercard` | `DragonCode\CardNumber\Enums\CardType::masterCard` |
9292
| Mir | `mir` | `DragonCode\CardNumber\Enums\CardType::mir` |
93+
| Ralf Ringer | `ralfringer` | `DragonCode\CardNumber\Enums\CardType::ralfRinger` |
9394
| Troy | `troy` | `DragonCode\CardNumber\Enums\CardType::troy` |
9495
| Unionpay | `unionpay` | `DragonCode\CardNumber\Enums\CardType::unionPay` |
9596
| Visa | `visa` | `DragonCode\CardNumber\Enums\CardType::visa` |
9697
| VisaElectron | `visaelectron` | `DragonCode\CardNumber\Enums\CardType::visaElectron` |
98+
| Yves Rocher | `yvesrocher` | `DragonCode\CardNumber\Enums\CardType::yvesRocher` |
9799

98100
You can also check for invalid numbers:
99101

src/CardNumber.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,12 @@
1515
use DragonCode\CardNumber\Cards\Maestro;
1616
use DragonCode\CardNumber\Cards\MasterCard;
1717
use DragonCode\CardNumber\Cards\Mir;
18+
use DragonCode\CardNumber\Cards\RalfRinger;
1819
use DragonCode\CardNumber\Cards\Troy;
1920
use DragonCode\CardNumber\Cards\UnionPay;
2021
use DragonCode\CardNumber\Cards\Visa;
2122
use DragonCode\CardNumber\Cards\VisaElectron;
23+
use DragonCode\CardNumber\Cards\YvesRocher;
2224
use DragonCode\CardNumber\Enums\CardType;
2325
use DragonCode\CardNumber\Factories\Factory;
2426
use DragonCode\CardNumber\Formatters\DefaultFormatter;
@@ -40,10 +42,12 @@ public static function isValid(int|string $number, CardType|string|null $cardTyp
4042
CardType::maestro => Maestro::isValid($number),
4143
CardType::masterCard => MasterCard::isValid($number),
4244
CardType::mir => Mir::isValid($number),
45+
CardType::ralfRinger => RalfRinger::isValid($number),
4346
CardType::troy => Troy::isValid($number),
4447
CardType::unionPay => UnionPay::isValid($number),
4548
CardType::visa => Visa::isValid($number),
4649
CardType::visaElectron => VisaElectron::isValid($number),
50+
CardType::yvesRocher => YvesRocher::isValid($number),
4751
default => DefaultCard::isValid($number)
4852
};
4953
}

src/Cards/AmericanExpress.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
class AmericanExpress extends Card
88
{
9-
protected static string $pattern = '/^3[47][0-9]/';
9+
protected static ?string $pattern = '/^3[47][0-9]/';
1010

1111
protected static array $numberLength = [15, 16];
1212
}

src/Cards/Card.php

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414
abstract class Card
1515
{
16-
protected static string $pattern;
16+
protected static ?string $pattern = null;
1717

1818
protected static array $numberLength = [16];
1919

@@ -33,7 +33,11 @@ protected static function isValidLength(string $number): bool
3333

3434
protected static function isValidPattern(string $number): bool
3535
{
36-
return (bool) preg_match(static::$pattern, $number);
36+
if ($pattern = static::$pattern) {
37+
return (bool) preg_match($pattern, $number);
38+
}
39+
40+
return true;
3741
}
3842

3943
protected static function isValidNumber(string $number): bool

src/Cards/Dankort.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,5 @@
66

77
class Dankort extends Card
88
{
9-
protected static string $pattern = '/^5019/';
9+
protected static ?string $pattern = '/^5019/';
1010
}

src/Cards/DefaultCard.php

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@
66

77
class DefaultCard extends Card
88
{
9-
protected static string $pattern = '';
10-
119
public static function isValid(int|string $cardNumber): bool
1210
{
1311
return static::isValidNumber(

src/Cards/DinersClub.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
class DinersClub extends Card
88
{
9-
protected static string $pattern = '/^3(0[0-5]|[68][0-9])[0-9]/';
9+
protected static ?string $pattern = '/^3(0[0-5]|[68][0-9])[0-9]/';
1010

1111
protected static array $numberLength = [14];
1212
}

src/Cards/Discovery.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,5 @@
66

77
class Discovery extends Card
88
{
9-
protected static string $pattern = '/^6(011|22126|22925|4[4-9]|5)/';
9+
protected static ?string $pattern = '/^6(011|22126|22925|4[4-9]|5)/';
1010
}

src/Cards/Forbrugsforeningen.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,5 @@
66

77
class Forbrugsforeningen extends Card
88
{
9-
protected static string $pattern = '/^600/';
9+
protected static ?string $pattern = '/^600/';
1010
}

src/Cards/HiperCard.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
class HiperCard extends Card
88
{
9-
protected static string $pattern = '/^(606282\d{7}(\d{3})?)|(3841\d{15})/';
9+
protected static ?string $pattern = '/^(606282\d{7}(\d{3})?)|(3841\d{15})/';
1010

1111
protected static array $numberLength = [13, 16, 19];
1212
}

0 commit comments

Comments
 (0)