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); }
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); }