/** * @return bool */ public function isExtendable($className) { return Php\Aux::implementsInterface($className, 'PHPCrystal\\PHPCrystal\\Service\\MetaDriver\\ExtendableInterface'); }
/** * @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; }