/**
  * @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;
     });
 }
Пример #2
0
 /**
  * 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);
     });
 }
Пример #3
0
 /**
  * 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.
     });
 }