public function testGetInstance() { $injectFactory = new InjectFactory($this->di, 'DI\\InjectA'); $this->assertAttributeInstanceOf('DI\\InjectB', 'b', $injectFactory->getInstance()); $injectFactory = new InjectFactory($this->di, 'DI\\InjectB'); $this->assertSame($this->di, $injectFactory->getInstance()->getDI()); $injectFactory = new InjectFactory($this->di, 'DI\\InjectC'); $this->assertAttributeInstanceOf('DI\\InjectB', 'b', $injectFactory->getInstance()); $this->assertSame($this->di, $injectFactory->getInstance()->getDI()); }
/** * 构造函数, 可以为DI指定对象容器和对象提供者类, 若不指定则使用内置的默认容器和默认对象提供者类 * * @param \Pure\Container $container * @param \Pure\DI\Provider $provider */ public function __construct(Container $container = null, Provider $provider = null) { $this->_container = $container ?: new Container(); $this->_provider = $provider ?: new ProviderDefault(); $providerInject = new InjectFactory($this, $this->_provider); $providerInject->isAccept() and $this->_provider = $providerInject->getInstance(); $this->_provider->register(); }
protected function generateByString($className) { if (!class_exists($className, true)) { throw new Exception("Unable to load class '{$className}'"); } $injectFactory = new InjectFactory($this->_di, $className); return $injectFactory->getInstance(); }