public function createInstance(Container $container, $serviceName, array $serviceConfig)
 {
     list($instanceName, $methodName) = explode('->', $serviceConfig['builder']);
     $invocationSite = $container->get($instanceName);
     $activationArgs = isset($serviceConfig['arguments']) ? $container->resolveMany($serviceConfig['arguments']) : array();
     if (!method_exists($invocationSite, $methodName)) {
         throw new UnbuildableServiceException(sprintf("Class '%s' has no '%s' method.", $instanceName, $methodName));
     }
     return call_user_func_array(array($invocationSite, $methodName), $activationArgs);
 }
Пример #2
0
 public function testResolvingAManuallyBoundObjectDefinitionReturnsCorrectInstance()
 {
     $config = $this->getMockBuilder('\\DICIT\\Config\\AbstractConfig')->disableOriginalConstructor()->setMethods(array('load', 'getData'))->getMockForAbstractClass();
     $config->expects($this->any())->method('load')->will($this->returnValue(array('classes' => array())));
     $activatorFactory = new ActivatorFactory(true);
     $container = new Container($config, $activatorFactory);
     $itemDefinition = array('class' => '\\stdClass', 'props' => array('dummy' => 'dummy-value'));
     $container->bind('boundKey', $itemDefinition);
     $item = $container->get('boundKey');
     $this->assertEquals('dummy-value', $item->dummy);
 }