Skip to content

Commit 6d35d1d

Browse files
committed
move Activator to core package
1 parent 8fb915b commit 6d35d1d

File tree

2 files changed

+21
-48
lines changed

2 files changed

+21
-48
lines changed

src/Dependency/Activator.php

Lines changed: 0 additions & 47 deletions
This file was deleted.

src/Dependency/ServiceProvider.php

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88

99
namespace DevNet\Common\Dependency;
1010

11+
use DevNet\System\Activator;
12+
1113
class ServiceProvider implements IServiceProvider
1214
{
1315
private array $instanceServices = [];
@@ -50,7 +52,25 @@ public function getService(string $serviceType): ?object
5052
}
5153
}
5254

53-
$instance = Activator::CreateInstance($serviceDescriptor->ImplementationType, $this);
55+
$instance = Activator::CreateInstance($serviceDescriptor->ImplementationType, [$this],
56+
function (array $args, array $params) {
57+
$provider = $args[0];
58+
$args = [];
59+
foreach ($params as $parameter) {
60+
$parameterType = '';
61+
if ($parameter->getType()) {
62+
$parameterType = $parameter->getType()->getName();
63+
}
64+
65+
if (!$provider->contains($parameterType)) {
66+
break;
67+
}
68+
69+
$args[] = $provider->getService($parameterType);
70+
}
71+
72+
return $args;
73+
});
5474
$this->instanceServices[$serviceType] = $instance;
5575
return $instance;
5676
}

0 commit comments

Comments
 (0)