Dumplie\SharedKernel\Infrastructure\Symfony\DependencyInjeciton\ServiceContainer::register PHP Method

register() public method

public register ( string $id, Definition $definition )
$id string
$definition Dumplie\SharedKernel\Application\ServiceContainer\Definition
    public function register(string $id, Definition $definition)
    {
        $createArguments = function (BaseContainer\Argument $argument) use(&$createArguments) {
            if ($argument instanceof BaseContainer\ScalarArgument) {
                return $argument->value();
            }
            if ($argument instanceof BaseContainer\ArgumentService) {
                return new Reference($argument->value());
            }
            if ($argument instanceof BaseContainer\ArgumentCollection) {
                return array_map($createArguments, $argument->value());
            }
        };
        $this->builder->setDefinition($id, new SymfonyDefinition($definition->className(), array_map($createArguments, $definition->arguments())));
    }

Usage Example

 public function test_service_registration()
 {
     $this->serviceContainer->register('test', new Definition(\stdClass::class));
     $this->assertTrue($this->containerBuilder->has('test'));
     $this->assertSame(\stdClass::class, $this->containerBuilder->getDefinition('test')->getClass());
 }