| Conditions | 7 |
| Paths | 12 |
| Total Lines | 23 |
| Code Lines | 14 |
| Lines | 0 |
| Ratio | 0 % |
| Changes | 1 | ||
| Bugs | 0 | Features | 0 |
| 1 | <?php |
||
| 9 | public static function validate($tax_number) |
||
| 10 | { |
||
| 11 | if (isset(static::$cache[$tax_number])) { |
||
| 12 | return static::$cache[$tax_number]; |
||
| 13 | } |
||
| 14 | |||
| 15 | if (strlen($tax_number) !== 10) { |
||
| 16 | return static::$cache[$tax_number] = false; |
||
| 17 | } |
||
| 18 | |||
| 19 | $array = array_map(function ($value) { |
||
| 20 | return intval($value); |
||
| 21 | }, str_split($tax_number)); |
||
| 22 | |||
| 23 | $sum = 0; |
||
| 24 | for ($i = 0; $i < 9; $i++) { |
||
| 25 | $mod = ($array[$i] + (9 - $i)) % 10; |
||
| 26 | $pow = $mod * pow(2, (9 - $i)) % 9; |
||
| 27 | $sum += ($mod !== 0 && $pow === 0) ? 9 : $pow; |
||
| 28 | } |
||
| 29 | $checksum = ($sum % 10 === 0) ? 0 : (10 - ($sum % 10)); |
||
| 30 | |||
| 31 | return static::$cache[$tax_number] = $checksum === $array[9]; |
||
| 32 | } |
||
| 34 |