forked from xyz2k8/demo-server-php
/
DataType.php
69 lines (61 loc) · 1.46 KB
/
DataType.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<?php
abstract class BaseType{
public $val;
public function __construct($val){
$this->val=$val;
}
public function __toString(){
return strval($this->val);
}
public function __invoke(){
return $this->val;
}
}
final class Integer extends BaseType{
public function __construct($val=0){
if(is_int($val) || preg_match("/^\d+$/", $val)) {
$val = (int)$val;
parent::__construct($val);
} else
throw new Exception("this value is not Integer");
}
}
final class Boolean extends BaseType{
public function __construct($val){
if(strcasecmp($val,'true') || strcmp($val,'1')) {
$val = true;
parent::__construct($val);
} else if(strcasecmp($val,'false') || strcmp($val,'0')) {
$val = false;
parent::__construct($val);
} else
throw new Exception("this value is not bool");
}
}
final class String extends BaseType{
public function __construct($val){
$val = trim($val);
if(strlen($val) > 0) {
parent::__construct($val);
} else
throw new Exception("this value is Empty");
}
}
final class Email extends BaseType{
public function __construct($val){
$val = trim($val);
if(preg_match("/^[\w.-]+@[\w.-]+$/", $val)) {
parent::__construct($val);
} else
throw new Exception("this value is not Email");
}
}
final class Mobile extends BaseType{
public function __construct($val){
$val = trim($val);
if(preg_match("/^1\d{10}$/", $val)) {
parent::__construct($val);
} else
throw new Exception("this value is not Mobile");
}
}