public function testBuildFromArray() { $service = ['MyService' => ['aliases' => ['Service123', 'Service456'], 'factory' => function (ServiceLocatorInterface $serviceLocator) { return new stdClass(); }, 'shared' => false]]; $configuration = \Alien\Di\Configuration::createFromArray($service); $sl = $this->serviceLocator; $this->assertEquals('MyService', $configuration->getName()); $this->assertEquals(false, $configuration->isShared()); $this->assertEquals(['Service123', 'Service456'], $configuration->getAliases()); $sl->register($configuration); $this->assertInstanceOf('stdClass', $sl->get('MyService')); }
/** * Creates new configuration corresponding given object. * * If none <code>$name</code> is given, class name (type) is used as identifier. * * All configuration values are set to default. * * @param mixed $object instance of object to create configuration for. * @param string $name [optional] service name. * @return ServiceConfigurationInterface */ protected function createConfiguration($object, $name = null) { if (!is_object($object)) { throw new InvalidArgumentException(sprintf("Invalid type given: %s.", gettype($object))); } $name = $name ?: get_class($object); $config = [$name => ['factory' => $object]]; return Configuration::createFromArray($config); }