/**
  * @param object $object
  * @param string $class
  * @param string $name
  * @param object|object[] $value
  */
 public static function writeProperty($object, $class, $name, $value)
 {
     $rp = new Property($class, $name);
     if (!$rp->isPublic()) {
         $rp->setAccessible(TRUE);
     }
     $rp->setValue($object, $value);
 }
Пример #2
0
 private function patchService($serviceId, Code\ClassType $advisedClass, Code\PhpNamespace $cg, $constructorInject = FALSE)
 {
     static $publicSetup;
     if ($publicSetup === NULL) {
         $refl = new Nette\Reflection\Property('Nette\\DI\\ServiceDefinition', 'setup');
         $publicSetup = $refl->isPublic();
     }
     $def = $this->getContainerBuilder()->getDefinition($serviceId);
     if ($def->getFactory()) {
         $def->setFactory(new Nette\DI\Statement($cg->getName() . '\\' . $advisedClass->getName()));
     } else {
         $def->setFactory($cg->getName() . '\\' . $advisedClass->getName());
     }
     if (!$constructorInject) {
         $statement = new Nette\DI\Statement(AdvisedClassType::CG_INJECT_METHOD, ['@Nette\\DI\\Container']);
         if ($publicSetup) {
             array_unshift($def->setup, $statement);
         } else {
             $setup = $def->getSetup();
             array_unshift($setup, $statement);
             $def->setSetup($setup);
         }
     }
 }