Nette\DI\Extensions\InjectExtension::getInjectProperties PHP Method

getInjectProperties() public static method

Generates list of properties with annotation @inject.
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;
    }

Usage Example

 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];
         }
     }
 }
All Usage Examples Of Nette\DI\Extensions\InjectExtension::getInjectProperties