define() public method

Sets a factory for the service creation. The same service will be returned every time
public define ( string $id, callable $definition, array $tags = [] )
$id string
$definition callable
$tags array
コード例 #1
0
 /**
  * Load collaborator into PHPSpec ServiceContainer
  *
  * @param ServiceContainer $container
  */
 public function load(ServiceContainer $container, array $params)
 {
     $container->define('ecomdev.phpspec.magento_di_adapter.vfs', $this->vfsFactory());
     $container->define('ecomdev.phpspec.magento_di_adapter.code_generator.io', $this->ioFactory());
     $container->define('ecomdev.phpspec.magento_di_adapter.code_generator.defined_classes', $this->simplifiedDefinedClassesFactory());
     $container->define('ecomdev.phpspec.magento_di_adapter.parameter_validator', $this->parameterValidatorFactory());
     $container->define('runner.maintainers.ecomdev_magento_collaborator', $this->collaboratorMaintainerFactory(), ['runner.maintainers']);
 }
コード例 #2
0
 /**
  * Loads matchers into PHPSpec service container
  *
  * @param ServiceContainer $container
  * @param array $params
  */
 public function load(ServiceContainer $container, array $params)
 {
     $container->define('ecomdev.matcher.file', function () {
         return $this->createFileMatcher();
     }, ['matchers']);
     $container->define('ecomdev.matcher.file_content', function () {
         return $this->createFileContentMatcher();
     }, ['matchers']);
     $container->define('ecomdev.matcher.directory', function () {
         return $this->createDirectoryMatcher();
     }, ['matchers']);
 }
 /**
  * @param ServiceContainer $container
  * @param array            $params
  */
 public function load(ServiceContainer $container, array $params)
 {
     $container->define('code_generator.generators.method.classidentifier', function ($c) {
         return new ClassIdentifier();
     });
     $container->define('code_generator.generators.method.argumentbuilder', function ($c) {
         return new StringBuilder($c->get('code_generator.generators.method.classidentifier'));
     });
     $container->define('code_generator.generators.method', function ($c) {
         return new TypeHintedMethodGenerator($c->get('console.io'), $c->get('code_generator.templates'), null, $c->get('code_generator.generators.method.argumentbuilder'));
     });
 }
コード例 #4
0
 /**
  * {@inheritdoc}
  */
 public function load(ServiceContainer $container, array $params)
 {
     $container->define('laravel', function () use($params) {
         return new Laravel(isset($params['testing_environment']) ? $params['testing_environment'] : null, $this->getBootstrapPath(isset($params['framework_path']) ? $params['framework_path'] : null));
     });
     $container->define('runner.maintainers.laravel', function (ServiceContainer $c) {
         return new LaravelMaintainer($c->get('laravel'));
     }, ['runner.maintainers']);
     $container->define('runner.maintainers.presenter', function (ServiceContainer $c) {
         return new PresenterMaintainer($c->get('formatter.presenter'));
     }, ['runner.maintainers']);
     $container->define('event_dispatcher.listeners.laravel', function (ServiceContainer $c) {
         return new LaravelListener($c->get('laravel'));
     }, ['event_dispatcher.listeners']);
 }
コード例 #5
0
 /**
  * {@inheritdoc}
  */
 public function load(ServiceContainer $container, array $params)
 {
     if (!$container instanceof IndexedServiceContainer) {
         throw new \InvalidArgumentException(sprintf('Container passed from PhpSpec must be an instance of "%s"', IndexedServiceContainer::class));
     }
     $container->define('pamil.matchers.generate', function (IndexedServiceContainer $c) {
         return new Matcher\GenerateMatcher($c->get('formatter.presenter'));
     }, ['matchers']);
     $container->define('pamil.matchers.generate_values', function (IndexedServiceContainer $c) {
         return new Matcher\GenerateValuesMatcher($c->get('formatter.presenter'));
     }, ['matchers']);
     $container->define('pamil.matchers.generate_keys', function (IndexedServiceContainer $c) {
         return new Matcher\GenerateKeysMatcher($c->get('formatter.presenter'));
     }, ['matchers']);
 }
コード例 #6
0
 function it_adds_existing_matchers(ServiceContainer $container)
 {
     $container->define('ecomdev.matcher.file', Argument::that(function ($value) {
         $check = $value();
         return $check instanceof CheckMatcher && $check->supports('haveFile', null, ['file']) && $check->supports('beFile', null, ['file']) && $check->supports('haveFiles', null, ['file', 'file2']) && $check->supports('createFiles', null, ['file', 'file2']);
     }), ['matchers'])->shouldBeCalled();
     $container->define('ecomdev.matcher.file_content', Argument::that(function ($value) {
         $check = $value();
         return $check instanceof CheckMatcher && $check->supports('haveFileContent', null, ['file', 'content']);
     }), ['matchers'])->shouldBeCalled();
     $container->define('ecomdev.matcher.directory', Argument::that(function ($value) {
         $check = $value();
         return $check instanceof CheckMatcher && $check->supports('haveDirectory', null, ['directory']) && $check->supports('beDirectory', null, ['directory']) && $check->supports('haveDirectories', null, ['directory', 'directory2']) && $check->supports('createDirectories', null, ['directory', 'directory2']);
     }), ['matchers'])->shouldBeCalled();
     $this->load($container, []);
 }
コード例 #7
0
ファイル: Extension.php プロジェクト: phpspec/nyan-formatters
 /**
  * Add a formatter to the service container
  *
  * @param ServiceContainer $container
  * @param string           $name
  * @param string           $class
  */
 protected function addFormatter(ServiceContainer $container, $name, $class)
 {
     $container->define('formatter.formatters.nyan.' . $name, function ($c) use($class) {
         /** @var ServiceContainer $c */
         return new $class($c->get('formatter.presenter'), $c->get('console.io'), $c->get('event_dispatcher.listeners.stats'));
     });
 }
コード例 #8
0
 function it_adds_those_factories_into_container_on_load()
 {
     $this->serviceContainer->define('ecomdev.phpspec.magento_di_adapter.code_generator.io', Argument::type(\Closure::class))->shouldBeCalled();
     $this->serviceContainer->define('ecomdev.phpspec.magento_di_adapter.vfs', Argument::type(\Closure::class))->shouldBeCalled();
     $this->serviceContainer->define('ecomdev.phpspec.magento_di_adapter.code_generator.defined_classes', Argument::type(\Closure::class))->shouldBeCalled();
     $this->serviceContainer->define('ecomdev.phpspec.magento_di_adapter.parameter_validator', Argument::type(\Closure::class))->shouldBeCalled();
     $this->serviceContainer->define('runner.maintainers.ecomdev_magento_collaborator', Argument::type(\Closure::class), ['runner.maintainers'])->shouldBeCalled();
     $this->load($this->serviceContainer, []);
 }
コード例 #9
0
 private function defineupGenerators(ServiceContainer $container)
 {
     $container->define('code_generator.generators.method', function (ServiceContainer $container) {
         return new \Memio\SpecGen\MethodGenerator($container->get('memio_spec_gen.command_bus'));
     }, self::CODE_GENERATOR_TAG);
     $container->define('code_generator.generators.constructor', function (ServiceContainer $container) {
         return new \Memio\SpecGen\ConstructorGenerator($container->get('memio_spec_gen.command_bus'));
     }, self::CODE_GENERATOR_TAG);
 }
コード例 #10
0
 function it_registers_the_laravel_listener(ServiceContainer $container)
 {
     $container->define('event_dispatcher.listeners.laravel', Argument::type('Closure'), Argument::type('array'))->shouldBeCalled();
     $this->load($container, []);
 }