<?php require_once __DIR__ . '/../includes/classes.php'; $container = new sfServiceContainerBuilder(); $container->register('foo', 'FooClass')->setConstructor('getInstance')->setArguments(array('foo', new sfServiceReference('foo.baz'), array('%foo%' => 'foo is %foo%'), true, new sfServiceReference('service_container')))->setFile(realpath(__DIR__ . '/../includes/foo.php'))->setShared(false)->addMethodCall('setBar', array('bar'))->addMethodCall('initialize')->setConfigurator('sc_configure'); $container->register('bar', 'FooClass')->setArguments(array('foo', new sfServiceReference('foo.baz'), new sfServiceParameter('foo_bar')))->setShared(true)->setConfigurator(array(new sfServiceReference('foo.baz'), 'configure')); $container->register('foo.baz', '%baz_class%')->setConstructor('getInstance')->setConfigurator(array('%baz_class%', 'configureStatic1')); $container->register('foo_bar', 'FooClass'); $container->setParameters(array('baz_class' => 'BazClass', 'foo' => 'bar', 'foo_bar' => new sfServiceReference('foo_bar'))); $container->setAlias('alias_for_foo', 'foo'); return $container;
$t->diag('->getAliases()'); $builder = new sfServiceContainerBuilder(); $builder->setAlias('bar', 'foo'); $builder->setAlias('foobar', 'foo'); $t->is($builder->getAliases(), array('bar' => 'foo', 'foobar' => 'foo'), '->getAliases() returns all service aliases'); $builder->register('bar', 'stdClass'); $t->is($builder->getAliases(), array('foobar' => 'foo'), '->getAliases() does not return aliased services that have been overridden'); $builder->setService('foobar', 'stdClass'); $t->is($builder->getAliases(), array(), '->getAliases() does not return aliased services that have been overridden'); // ->hasService() $t->diag('->hasService()'); $builder = new sfServiceContainerBuilder(); $t->ok(!$builder->hasService('foo'), '->hasService() returns false if the service does not exist'); $builder->register('foo', 'FooClass'); $t->ok($builder->hasService('foo'), '->hasService() returns true if a service definition exists'); $builder->setAlias('foobar', 'foo'); $t->ok($builder->hasService('foo'), '->hasService() returns true if a service definition exists'); $builder->setService('bar', new stdClass()); $t->ok($builder->hasService('bar'), '->hasService() returns true if a service exists'); $builder->setAlias('foobar2', 'foo'); $t->ok($builder->hasService('foobar2'), '->hasService() returns true if a service exists'); // ->getService() $t->diag('->getService()'); $builder = new sfServiceContainerBuilder(); try { $builder->getService('foo'); $t->fail('->getService() throws an InvalidArgumentException if the service does not exist'); } catch (InvalidArgumentException $e) { $t->pass('->getService() throws an InvalidArgumentException if the service does not exist'); } $builder->register('foo', 'stdClass');