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%
8 / 8
Phone
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
2
100.00% covered (success)
100.00%
8 / 8
 check
100.00% covered (success)
100.00%
1 / 1
2
100.00% covered (success)
100.00%
8 / 8
1<?php
2
3namespace Qmp\Laravel\ValidationRules\Rules;
4
5class Phone extends Rule
6{
7    /**
8     * Undocumented variable
9     *
10     * @var string
11     */
12    protected $message = 'The :attribute must be a valid phone number';
13
14    /**
15     * Undocumented variable
16     *
17     * @var array
18     */
19    protected $patterns = [
20        'FR' => '/^(?:(?:\+|00)33|0|\+33\(0\))[1-9](?:[\s.-]*\d{2}){4}$/i',
21        'IT' => '/^(\((00|\+)39\)|(00|\+)39)?(38[890]|34[7-90]|36[680]|33[3-90]|32[89])\d{7}$/i',
22    ];
23
24    /**
25     * Undocumented function
26     *
27     * @param string $attribute
28     * @param mixed $value
29     * @param array $parameters
30     * @return bool
31     */
32    public function check(string $attribute, $value, array $parameters): bool
33    {
34        $parameters = array_map('strtoupper', $parameters);
35        $value = preg_replace('/[^0-9+]/', '', $value);
36
37        $patterns = collect($this->patterns);
38        $patterns = empty($parameters) ? $patterns : $patterns->only($parameters);
39
40        $filtered = $patterns->filter(function ($pattern) use ($value) {
41            return preg_match($pattern, $value);
42        });
43
44        return $filtered->count() > 0;
45    }
46}