Skip to content

Commit c49d9e9

Browse files
authored
Merge pull request #34 from RonasIT/dpankratov/version-update
- added check for using interface instead of implementation;
2 parents c87538f + 1806977 commit c49d9e9

File tree

1 file changed

+16
-2
lines changed

1 file changed

+16
-2
lines changed

src/Traits/GetDependenciesTrait.php

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,11 @@
33
namespace RonasIT\Support\AutoDoc\Traits;
44

55
use ReflectionMethod;
6-
use ReflectionFunctionAbstract;
6+
use ReflectionFunction;
77
use ReflectionParameter;
8+
use Illuminate\Support\Arr;
9+
use ReflectionFunctionAbstract;
10+
use Illuminate\Container\Container;
811

912
trait GetDependenciesTrait
1013
{
@@ -34,6 +37,17 @@ protected function transformDependency(ReflectionParameter $parameter)
3437
return null;
3538
}
3639

37-
return interface_exists($class->name) ? get_class(app($class->name)) : $class->name;
40+
return interface_exists($class->name) ? $this->getClassByInterface($class->name) : $class->name;
41+
}
42+
43+
protected function getClassByInterface($interfaceName)
44+
{
45+
$bindings = Container::getInstance()->getBindings();
46+
47+
$implementation = Arr::get($bindings, "{$interfaceName}.concrete");
48+
49+
$classFields = (new ReflectionFunction($implementation))->getStaticVariables();
50+
51+
return $classFields['concrete'];
3852
}
3953
}

0 commit comments

Comments
 (0)