-
Notifications
You must be signed in to change notification settings - Fork 0
/
class-as-parameter.php
105 lines (63 loc) · 1.8 KB
/
class-as-parameter.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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
<?php
class Request {
protected $rules = array();
protected $errors = array();
function __construct() {
$this->rules = $this->rules();
}
public function get($var) {
if(isset($_REQUEST[$var]))
return $_REQUEST[$var];
}
public function validate() {
foreach($this->rules as $key => $rule) {
if($this->get($key) == '') {
$this->errors[] = $key.' is required';
}
}
return $this->errors;
}
}
class FormRequest extends Request {
public function rules() {
return [
'page' => 'required',
'index' => 'required'
];
}
}
class Controller {
public function index(FormRequest $request) {
$page = $request->get('page');
echo 'Controller Index'.$page;
}
}
// $obj = new Controller;
// $obj->index(new FormRequest);
// $reflector = new ReflectionMethod("Controller", "index");
// foreach ($reflector->getParameters() as $param) {
// // param name
// echo 'Name: '.$param->name.'<br/>';
// // param type hint (or null, if not specified).
// if(isset($param->getClass()->name)) {
// echo 'Type: '.$param->getClass()->name.'<br/>';
// }
// // finds out if the param is required or optional
// echo 'Optional: '.$param->isOptional().'<br/><br/>';
// }
$controller = 'Controller';
$method = 'index';
$reflector = new ReflectionMethod($controller, $method);
foreach($reflector->getParameters() as $param) {
if(isset($param->getClass()->name)) {
$requestClass = $param->getClass()->name;
$request = new $requestClass;
$response = $request->validate();
if(sizeof($response) > 0) {
var_dump($response);
} else {
$obj = new $controller;
$obj->$method(new $requestClass);
}
}
}