commit | author | age
|
2bddb6
|
1 |
<?php |
F |
2 |
|
|
3 |
namespace Framework; |
|
4 |
use ReflectionClass; |
|
5 |
|
|
6 |
class Container { |
|
7 |
public function get(string $class_name):object { |
|
8 |
$reflector = new ReflectionClass($class_name); |
|
9 |
$contructor = $reflector->getConstructor(); |
|
10 |
|
|
11 |
$dependencies = []; |
|
12 |
|
|
13 |
if($contructor === null) { |
|
14 |
return new $class_name(); |
|
15 |
} |
|
16 |
|
|
17 |
foreach($contructor->getParameters() as $param) { |
|
18 |
$type = (string) $param->getType(); |
|
19 |
$dependencies[] = $this->get($type); |
|
20 |
} |
|
21 |
|
|
22 |
return new $class_name(...$dependencies); |
|
23 |
} |
|
24 |
} |