コード例 #1
0
ファイル: MetaDriver.php プロジェクト: phpcrystal/phpcrystal
 /**
  * @return bool
  */
 public function isExtendable($className)
 {
     return Php\Aux::implementsInterface($className, 'PHPCrystal\\PHPCrystal\\Service\\MetaDriver\\ExtendableInterface');
 }
コード例 #2
0
ファイル: Factory.php プロジェクト: phpcrystal/phpcrystal
 /**
  * @return object
  */
 public function createObject($className, $factoryArgs = [])
 {
     if ($this->singletonHasInstance($className)) {
         return $this->singletonGetInstance($className);
     }
     if (Php\Aux::implementsInterface($className, DI_INTERFACE)) {
         $injector = $this->DI_Manager->getInjectorReflection($className);
         $constructorArgs = $this->DI_Manager->getDependencies($injector);
     } else {
         $constructorArgs = $factoryArgs;
     }
     $newObject = $className::isSingleton() ? $this->singletonNewInstance($className, $constructorArgs) : new $className(...$constructorArgs);
     $this->bind($newObject);
     $newObject->setFactoryArgs(Container\FactoryArgs::createFromArray($factoryArgs));
     return $newObject;
 }