public static getInjectProperties ( $class ) : array | ||
return | array |
public static function getInjectProperties($class)
{
$res = [];
foreach (get_class_vars($class) as $name => $foo) {
$rp = new \ReflectionProperty($class, $name);
if (PhpReflection::parseAnnotation($rp, 'inject') !== NULL) {
if ($type = PhpReflection::parseAnnotation($rp, 'var')) {
$type = PhpReflection::expandClassName($type, PhpReflection::getDeclaringClass($rp));
}
$res[$name] = $type;
}
}
ksort($res);
return $res;
}
private function injectByProperties(Presenter $presenter) { if (class_exists(InjectExtension::class)) { /** @noinspection PhpInternalEntityUsedInspection */ $properties = InjectExtension::getInjectProperties(get_class($presenter)); // Nette 2.3+ } else { $properties = Helpers::getInjectProperties(new ClassType($presenter)); // Nette 2.2 } foreach ($properties as $property => $type) { if (isset($this->dependencies['@' . $property])) { $presenter->{$property} = $this->dependencies['@' . $property]; } elseif (isset($this->dependencies[$property])) { $presenter->{$property} = $this->dependencies[$property]; } } }