<?php
/**
* Test: NetteDIContainerBuilder and Container: createInstance()
*
* @author David Grudl
* @package NetteDI
* @subpackage UnitTests
*/
use NetteDI;
require __DIR__ . '/../bootstrap.php';
class Test
{
public $container;
function __construct(stdClass $obj, DIContainer $container)
{
$this->container = $container;
}
function method(stdClass $obj, DIContainer $container)
{
return isset($obj->
prop);
}
}
$builder = new DIContainerBuilder;
$builder->addDefinition('one')
->setClass('stdClass');
// run-time
$code = (string) $builder->generateClass();
file_put_contents(TEMP_DIR . '/code.php', "<?phpn$code");
require TEMP_DIR . '/code.php';
$container = new Container;
$test = $container->createInstance('Test');
assert::
true( $test instanceof Test
);
assert::
same( $container,
$test->
container );
assert::
same( false,
$container->
callMethod(array($test,
'method')) );
assert::
same( true,
$container->
callMethod(array($test,
'method'),
array((object
) array('prop' =>
true))) );