-
Notifications
You must be signed in to change notification settings - Fork 20
/
Copy pathBaseType.php
46 lines (40 loc) · 918 Bytes
/
BaseType.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
<?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 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 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");
}
}