Exemplo n.º 1
0
 /**
  * 构造函数, 可以为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();
 }
Exemplo n.º 2
0
 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();
 }
Exemplo n.º 3
0
 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());
 }