Beispiel #1
0
 public function configure(Container $container)
 {
     $container->register('xdebug.command.profile', function (Container $container) {
         return new ProfileCommand($container->get('console.command.handler.runner'));
     }, array('console.command' => array()));
     $container->register('benchmark.executor.xdebug', function (Container $container) {
         return new XDebugExecutor($container->get('benchmark.remote.launcher'));
     }, array('benchmark_executor' => array('name' => 'xdebug')));
 }
Beispiel #2
0
 public static function run()
 {
     $config = self::loadConfig();
     $container = new Container($config['extensions']);
     unset($config['extensions']);
     $container->configure();
     $container->mergeParameters($config);
     $container->build();
     $container->get('console.application')->run();
 }
Beispiel #3
0
 public static function run()
 {
     // Converts warnings to exceptions
     ErrorHandler::register();
     $config = self::loadConfig();
     $container = new Container($config['extensions']);
     unset($config['extensions']);
     $container->configure();
     $container->mergeParameters($config);
     $container->build();
     $container->get('console.application')->run();
 }
Beispiel #4
0
 public function load(Container $container)
 {
     if (!class_exists(Version::class)) {
         throw new \RuntimeException('The DBAL extension requires the "doctrine/dbal" package. Run `composer require --dev "doctrine/dbal"`');
     }
     $container->register('storage.driver.dbal.connection', function (Container $container) {
         static $connection;
         if ($connection) {
             return $connection;
         }
         $params = $container->getParameter('storage.dbal.connection');
         if (isset($params['path'])) {
             $params['path'] = PhpBench::normalizePath($params['path']);
         }
         $connection = DriverManager::getConnection($params);
         return $connection;
     });
     $container->register('storage.driver.dbal.connection_manager', function (Container $container) {
         return new Storage\Driver\Dbal\ConnectionManager($container->get('storage.driver.dbal.connection'));
     });
     $container->register('storage.driver.dbal', function (Container $container) {
         return new Storage\Driver\DbalDriver($container->get('storage.driver.dbal.loader'), $container->get('storage.driver.dbal.persister'), $container->get('storage.driver.dbal.repository'));
     }, ['storage_driver' => ['name' => 'dbal']]);
     $container->register('storage.driver.dbal.persister', function (Container $container) {
         return new Storage\Driver\Dbal\Persister($container->get('storage.driver.dbal.connection_manager'));
     });
     $container->register('storage.driver.dbal.loader', function (Container $container) {
         return new Storage\Driver\Dbal\Loader($container->get('storage.driver.dbal.repository'));
     });
     $container->register('storage.driver.dbal.visitor.token_value', function (Container $container) {
         return new Storage\Driver\Dbal\Visitor\TokenValueVisitor($container->get('storage.uuid_resolver'));
     });
     $container->register('storage.driver.dbal.repository', function (Container $container) {
         return new Storage\Driver\Dbal\Repository($container->get('storage.driver.dbal.connection_manager'), $container->get('storage.driver.dbal.visitor.token_value'));
     });
     $container->register('command.dbal.migrate', function (Container $container) {
         return new MigrateCommand($container->get('storage.driver.dbal.connection'));
     }, ['console.command' => []]);
 }
Beispiel #5
0
 public static function run(ClassLoader $autoloader)
 {
     // Converts warnings to exceptions
     ErrorHandler::register();
     $config = self::loadConfig();
     if (isset($config['extension_autoloader']) && $config['extension_autoloader']) {
         $autoloadFile = $config['extension_autoloader'];
         if (!file_exists($autoloadFile)) {
             throw new \InvalidArgumentException(sprintf('Could not find extension autoload file "%s"', $autoloadFile));
         }
         $autoloader->unregister();
         include $autoloadFile;
         $autoloader->register(true);
     }
     $extensions = $config['extensions'];
     $extensions[] = 'PhpBench\\Extension\\CoreExtension';
     unset($config['extensions']);
     $container = new Container($extensions, $config);
     $container->init();
     $container->get('console.application')->run();
 }
Beispiel #6
0
 public function load(Container $container)
 {
     $container->register('xdebug.command.profile', function (Container $container) {
         return new ProfileCommand($container->get('console.command.handler.runner'), $container->get('xdebug.command.handler.output_dir'));
     }, ['console.command' => []]);
     $container->register('xdebug.command.trace', function (Container $container) {
         return new TraceCommand($container->get('console.command.handler.runner'), $container->get('xdebug.renderer.trace'), $container->get('xdebug.command.handler.output_dir'));
     }, ['console.command' => []]);
     $container->register('xdebug.command.handler.output_dir', function (Container $container) {
         return new OutputDirHandler($container->getParameter('xdebug.output_dir'));
     });
     $container->register('benchmark.executor.xdebug_profile', function (Container $container) {
         return new ProfileExecutor($container->get('benchmark.remote.launcher'));
     }, ['benchmark_executor' => ['name' => 'xdebug_profile']]);
     $container->register('xdebug.executor.xdebug_trace', function (Container $container) {
         return new TraceExecutor($container->get('benchmark.remote.launcher'));
     }, ['benchmark_executor' => ['name' => 'xdebug_trace']]);
     $container->register('xdebug.renderer.trace', function (Container $container) {
         return new TraceRenderer($container->get('phpbench.formatter'));
     });
     $container->mergeParameter('executors', require_once __DIR__ . '/config/executors.php');
     $container->mergeParameter('reports', require_once __DIR__ . '/config/generators.php');
 }
Beispiel #7
0
 private function registerRegistries(Container $container)
 {
     foreach (array('generator', 'renderer') as $registryType) {
         $container->register('report.registry.' . $registryType, function (Container $container) use($registryType) {
             return new Registry($registryType, $container, $container->get('json_schema.validator'));
         });
     }
     $container->register('benchmark.registry.executor', function (Container $container) {
         return new Registry('executor', $container, $container->get('json_schema.validator'));
     });
 }
Beispiel #8
0
 /**
  * User configuration should take priority over extension configuration.
  */
 public function testRegisterExtensionWithUserConfig()
 {
     $container = new Container([__NAMESPACE__ . '\\TestExtension'], ['foo' => 'bazz']);
     $container->init();
     $object = $container->get('foobar');
     $this->assertInstanceOf('stdClass', $object);
     $this->assertEquals('bazz', $object->foobar);
 }
Beispiel #9
0
 private function registerStorage(Container $container)
 {
     $container->register('storage.driver_registry', function (Container $container) {
         $registry = new Registry('storage', $container, $container->getParameter('storage'));
         foreach ($container->getServiceIdsForTag('storage_driver') as $serviceId => $attributes) {
             $registry->registerService($attributes['name'], $serviceId);
         }
         return $registry;
     });
     $container->register('storage.archiver_registry', function (Container $container) {
         $registry = new Registry('archiver', $container, $container->getParameter('archiver'));
         foreach ($container->getServiceIdsForTag('storage_archiver') as $serviceId => $attributes) {
             $registry->registerService($attributes['name'], $serviceId);
         }
         return $registry;
     });
     $container->register('storage.driver.xml', function (Container $container) {
         return new XmlDriver($container->getParameter('xml_storage_path'), $container->get('serializer.encoder.xml'), $container->get('serializer.decoder.xml'));
     }, ['storage_driver' => ['name' => 'xml']]);
     $container->register('storage.uuid_resolver', function (Container $container) {
         return new UuidResolver($container->get('storage.driver_registry'));
     });
     $container->register('storage.archiver.xml', function (Container $container) {
         return new Storage\Archiver\XmlArchiver($container->get('storage.driver_registry'), $container->get('serializer.encoder.xml'), $container->get('serializer.decoder.xml'), $container->getParameter('archive_path'));
     }, ['storage_archiver' => ['name' => 'xml']]);
 }
Beispiel #10
0
 private function registerTabular(Container $container)
 {
     $container->register('tabular.xpath_resolver', function () {
         require_once __DIR__ . '/../Dom/xpath_functions.php';
         $resolver = new XPathResolver();
         $resolver->registerFunction('parameters_to_json', 'PhpBench\\Dom\\functions\\parameters_to_json');
         $resolver->registerFunction('class_name', 'PhpBench\\Dom\\functions\\class_name');
         $resolver->registerFunction('join_node_values', 'PhpBench\\Dom\\functions\\join_node_values');
         $resolver->registerFunction('suite', 'PhpBench\\Dom\\functions\\suite');
         return $resolver;
     });
     $container->register('tabular.table_builder', function (Container $container) {
         return new TableBuilder($container->get('tabular.xpath_resolver'));
     });
     $container->register('tabular.formatter.registry', function (Container $container) {
         $registry = new ArrayRegistry();
         $registry->register('printf', new PrintfFormat());
         $registry->register('balance', new BalanceFormat());
         $registry->register('number', new NumberFormat());
         $registry->register('truncate', new TruncateFormat());
         $registry->register('json_format', new JSONFormat());
         $registry->register('time', new TimeFormat());
         return $registry;
     });
     $container->register('tabular.formatter', function (Container $container) {
         return new Formatter($container->get('tabular.formatter.registry'));
     });
     $container->register('tabular', function (Container $container) {
         return new Tabular($container->get('tabular.table_builder'), $container->get('tabular.definition_loader'), $container->get('tabular.formatter'), $container->get('tabular.expander'));
     });
     $container->register('tabular.definition_loader', function (Container $container) {
         return new Loader($container->get('json_schema.validator'));
     });
     $container->register('tabular.expander', function (Container $container) {
         return new Expander();
     });
 }