/** * @param $name * @throws \Kdyby\Autowired\MemberAccessException * @return mixed */ public function &__get($name) { if (!isset($this->autowireProperties[$name])) { return parent::__get($name); } if (empty($this->autowireProperties[$name]['value'])) { if (!empty($this->autowireProperties[$name]['factory'])) { $factory = callback($this->autowirePropertiesLocator->getService($this->autowireProperties[$name]['factory']), 'create'); $this->autowireProperties[$name]['value'] = $factory->invokeArgs($this->autowireProperties[$name]['arguments']); } else { $this->autowireProperties[$name]['value'] = $this->autowirePropertiesLocator->getByType($this->autowireProperties[$name]['type']); } } return $this->autowireProperties[$name]['value']; }