IdNumValidator   A
last analyzed

Complexity

Total Complexity 2

Size/Duplication

Total Lines 41
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 1

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 2
lcom 1
cbo 1
dl 0
loc 41
ccs 7
cts 7
cp 1
rs 10
c 0
b 0
f 0

1 Method

Rating   Name   Duplication   Size   Complexity  
A init() 0 12 2
1
<?php
2
/**
3
 * @link https://github.com/yiiviet/yii2-validator
4
 * @copyright Copyright (c) 2018 Yii Viet
5
 * @license [New BSD License](http://www.opensource.org/licenses/bsd-license.php)
6
 */
7
8
namespace yiiviet\validator;
9
10
use yii\validators\RegularExpressionValidator;
11
12
/**
13
 * Lớp IdNumValidator dùng để kiểm tra số chứng minh thư có hợp lệ hay không.
14
 * Ví dụ khai báo kiểm tra số chứng minh thư trong model
15
 *
16
 * ```php
17
 *      public function rules() {
18
 *          return [
19
 *              ['idAttr', 'idnumvn', 'message' => 'Chứng minh nhân dân không hợp lệ.']
20
 *          ];
21
 *      }
22
 * ```
23
 *
24
 * Nếu bạn chấp nhận luôn thẻ căn cước vừa mới ban hành thì:
25
 *
26
 * ```php
27
 *      public function rules() {
28
 *          return [
29
 *              ['idAttr', 'idnumvn', 'message' => 'Chứng minh nhân dân hoặc thẻ căn cước không hợp lệ.', 'onlyId' => false]
30
 *          ];
31
 *      }
32
 * ```
33
 *
34
 * @author Vuong Minh <[email protected]>
35
 * @since 1.0
36
 */
37
class IdNumValidator extends RegularExpressionValidator
38
{
39
40
    /**
41
     * @var bool Thiết lập nếu như bạn chỉ muốn kiểm tra chứng minh thư (không bao gồm thẻ căn cước).
42
     */
43
    public $onlyId = false;
44
45
    /**
46
     * @var string Pattern của chứng minh thư cũ.
47
     */
48
    public $id = '^((0[0-8]|1[0-9]|2[0-9]|3[0-8])\d{7})|((09[015]|23[01]|245|28[015])\d{6})$';
49
50
    /**
51
     * @var string Pattern của chứng minh thư mới.
52
     */
53
    public $idNew = '^((0[0-8]|1[0-9]|2[0-9]|3[0-8])\d{10})|((09[015]|23[01]|245|28[015])\d{9})$';
54
55
    /**
56
     * @var string Pattern của căn cước công dân.
57
     */
58
    public $cId = '^(0[012468]|1[0124579]|2[02]|2[4-7]|3[01]|3[3-8]|4[0245689]|5[12468]|6[024678]|7[024579]|8[0234679]|9[1-6])\d{10}$';
59
60
    /**
61
     * {@inheritdoc}
62
     * @throws \yii\base\InvalidConfigException
63
     */
64 15
    public function init()
65
    {
66 15
        $pattern = [$this->id, $this->idNew];
67
68 15
        if (!$this->onlyId) {
69 10
            $pattern[] = $this->cId;
70
        }
71
72 15
        $this->pattern = "/(" . implode(")|(", $pattern) . ")/";
73
74 15
        parent::init();
75 15
    }
76
77
}
78