Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
CRAP
100.00% covered (success)
100.00%
9 / 9
Zipcode
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
2
100.00% covered (success)
100.00%
9 / 9
 check
100.00% covered (success)
100.00%
1 / 1
2
100.00% covered (success)
100.00%
9 / 9
1<?php
2
3namespace Qmp\Laravel\ValidationRules\Rules;
4
5
6class Zipcode extends Rule
7{
8    /**
9     * Undocumented variable
10     *
11     * @var string
12     */
13    protected $message = 'The :attribute must be a valid zipcode';
14
15        /**
16     * Undocumented variable
17     *
18     * @var array
19     */
20    protected $patterns = [
21        'BE' => '/^(?:\d{4})$/i',
22        'FR' => '/^(?:\d{2} ?\d{3})$/i',
23        'IT' => '/^(?:\d{5})$/i'
24    ];
25    
26
27    /**
28     * Undocumented function
29     *
30     * @param string $attribute
31     * @param mixed $value
32     * @param array $parameters
33     * @return bool
34     */
35    public function check(string $attribute, $value, array $parameters): bool
36    {
37        $parameters = array_map('strtoupper', $parameters);
38        $this->setError('Format : ' . implode(', ', $parameters));
39        $value = preg_replace('/[^0-9]/', '', $value);
40
41        $patterns = collect($this->patterns);
42        $patterns = empty($parameters) ? $patterns : $patterns->only($parameters);
43
44        $filtered = $patterns->filter(function ($pattern) use ($value) {
45            return preg_match($pattern, $value);
46        });
47
48        
49
50        return $filtered->count() > 0;
51    }
52}