/** * @testdox A protected resource can not be extended * @expectedException \Joomla\DI\Exception\ProtectedKeyException */ public function testExtendProtected() { $container = new Container(); $container->protect('foo', function () { return new \stdClass(); }); $value = 42; $container->extend('foo', function ($shared) use($value) { $shared->value = $value; return $shared; }); }
/** * Registers the service provider with a DI container. * * @param Container $container The DI container. * * @return Container Returns itself to support chaining. */ public function register(Container $container) { $name = $this->name; // Component $container->alias('component', ucfirst($name) . 'Component')->share(ucfirst($name) . 'Component', $this->component); // ControllerResolver $resolverClass = '\\Windwalker\\Controller\\Resolver\\ControllerResolver'; $container->alias('controller.resolver', $resolverClass)->share($resolverClass, function ($container) use($resolverClass) { return new $resolverClass($container->get('app'), $container); }); // Asset Helper $container->extend('helper.asset', function ($asset, $container) use($name) { $asset->resetPaths(); $asset = clone $asset; return $asset->setName('com_' . strtolower($name))->setContainer($container); }); }
/** * Testing the extend method to ensure that a valid key is present to extend. * * @return void * * @since 1.0 * * @expectedException \InvalidArgumentException */ public function testExtendValidatesKeyIsPresent() { $this->fixture->extend('foo', function () { // Noop. }); }