Inheritance: extends Nette\DI\CompilerExtension
コード例 #1
0
 /**
  * @param Presenter $presenter
  */
 private function injectByMethods(Presenter $presenter)
 {
     if (class_exists(InjectExtension::class)) {
         /** @noinspection PhpInternalEntityUsedInspection */
         $methods = InjectExtension::getInjectMethods($presenter);
         // Nette 2.3+
     } else {
         $methods = [];
         foreach (get_class_methods($presenter) as $method) {
             if (substr($method, 0, 6) === 'inject') {
                 $methods[] = $method;
             }
         }
     }
     unset($methods['injectPrimary']);
     foreach (array_reverse($methods) as $method) {
         $injectName = lcfirst(substr($method, 6));
         if (isset($this->dependencies[$injectName])) {
             if (!is_array($this->dependencies[$injectName])) {
                 $this->dependencies[$injectName] = [$this->dependencies[$injectName]];
             }
             call_user_func_array([$presenter, $method], $this->dependencies[$injectName]);
         }
     }
 }
コード例 #2
0
ファイル: Initialiser.php プロジェクト: Thoronir42/G-archive
 private function initialiseSchema()
 {
     $input = new ArrayInput(array('--force' => true));
     $output = new StringOutput();
     InjectExtension::callInjects($this->context, $this->schemaUpdateCommand);
     $this->schemaUpdateCommand->setHelperSet(new HelperSet(['em' => new EntityManagerHelper($this->em)]));
     $this->schemaUpdateCommand->run($input, $output);
     $this->messages[] = $output->getOutput();
 }
コード例 #3
0
 /**
  * Calls all methods starting with with "inject" using autowiring.
  * @param  object
  * @return void
  */
 public function callInjects($service)
 {
     Extensions\InjectExtension::callInjects($this, $service);
 }
コード例 #4
0
 private function doInjects(Presenter $presenter)
 {
     $properties = InjectExtension::getInjectProperties(get_class($presenter));
     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];
         }
     }
     $methods = InjectExtension::getInjectMethods($presenter);
     unset($methods['injectPrimary']);
     foreach (array_reverse($methods) as $method) {
         $injectName = lcfirst(substr($method, 6));
         if (isset($this->dependencies[$injectName])) {
             if (!is_array($this->dependencies[$injectName])) {
                 $this->dependencies[$injectName] = [$this->dependencies[$injectName]];
             }
             call_user_func_array($presenter->{$method}, $this->dependencies[$injectName]);
         }
     }
 }