本文整理汇总了PHP中Windwalker\DI\Container::createObject方法的典型用法代码示例。如果您正苦于以下问题:PHP Container::createObject方法的具体用法?PHP Container::createObject怎么用?PHP Container::createObject使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Windwalker\DI\Container
的用法示例。
在下文中一共展示了Container::createObject方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: testcreateObject
/**
* Method to test createObject().
*
* @return void
*
* @covers Windwalker\DI\Container::createObject
*/
public function testcreateObject()
{
$container = new Container();
$foo = $container->createObject('Windwalker\\DI\\Test\\Mock\\Foo');
$this->assertInstanceOf('Windwalker\\DI\\Test\\Mock\\Foo', $foo);
$this->assertInstanceOf('Windwalker\\DI\\Test\\Mock\\Bar', $foo->bar);
$this->assertInstanceOf('SplPriorityQueue', $foo->bar->queue);
$this->assertInstanceOf('SplStack', $foo->bar->stack);
// Bind a sub class
$container = new Container();
$container->share('SplStack', new StubStack());
$foo = $container->createObject('Windwalker\\DI\\Test\\Mock\\Foo');
$this->assertInstanceOf('Windwalker\\DI\\Test\\Mock\\StubStack', $foo->bar->stack);
// Bind not shared classes
$container = new Container();
$container->set('SplPriorityQueue', function () {
return new \SplPriorityQueue();
});
$queue = $container->get('SplPriorityQueue');
$foo = $container->createObject('Windwalker\\DI\\Test\\Mock\\Foo');
$this->assertNotSame($queue, $foo->bar->queue, 'Non shared class should be not same.');
// Auto create classes should be not shared
$container = new Container();
$bar1 = $container->createObject('Windwalker\\DI\\Test\\Mock\\Bar');
$bar2 = $container->createObject('Windwalker\\DI\\Test\\Mock\\Bar2');
$this->assertNotSame($bar1->queue, $bar2->queue);
// Not shared object
$container = new Container();
$foo = $container->createObject('Windwalker\\DI\\Test\\Mock\\Foo');
$foo2 = $container->get('Windwalker\\DI\\Test\\Mock\\Foo');
$this->assertNotSame($foo, $foo2);
// Shared object
$container = new Container();
$foo = $container->createObject('Windwalker\\DI\\Test\\Mock\\Foo', true);
$foo2 = $container->get('Windwalker\\DI\\Test\\Mock\\Foo');
$this->assertSame($foo, $foo2);
}