Jelle-S/TheSportsDb

View on GitHub
default_bootstrap.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php

include_once __DIR__ . '/vendor/autoload.php';

if (!defined('THESPORTSDB_API_KEY')) {
  define('THESPORTSDB_API_KEY', '1');
}
if (
  class_exists('\Symfony\Component\DependencyInjection\ContainerBuilder')
  && class_exists('\Symfony\Component\Config\Resource\FileResource')
  && class_exists('Symfony\Component\DependencyInjection\Loader\YamlFileLoader')
  && class_exists('\HendrichA\TagPassLibrary\TagPass')
) {
  // Use the dependency injection container if available.
  include_once __DIR__ . '/default_bootstrap_dic.php';
  return;
}

// Http client.
$httpClient = new GuzzleHttp\Client();

// Factory container.
$factoryContainer = new TheSportsDb\Entity\Factory\FactoryContainer();

// Repository container.
$repositoryContainer = new TheSportsDb\Entity\Repository\RepositoryContainer();

// Property mapper.
$propertyMapper = new FastNorth\PropertyMapper\Mapper();

// Entity manager.
$entityManager = new TheSportsDb\Entity\EntityManager($propertyMapper, $factoryContainer, $repositoryContainer);
$entityManager->registerClass('league');
$entityManager->registerClass('sport');
$entityManager->registerClass('team');
$entityManager->registerClass('event');
$entityManager->registerClass('player');
$entityManager->registerClass('season');

// The sports db client.
$sportsDbClient = new TheSportsDb\Http\TheSportsDbClient(THESPORTSDB_API_KEY, $httpClient);

// Repositories.
$repositoryContainer->addRepository(new TheSportsDb\Entity\Repository\SportRepository($sportsDbClient, $entityManager));
$repositoryContainer->addRepository(new TheSportsDb\Entity\Repository\LeagueRepository($sportsDbClient, $entityManager));
$repositoryContainer->addRepository(new TheSportsDb\Entity\Repository\SeasonRepository($sportsDbClient, $entityManager));
$repositoryContainer->addRepository(new TheSportsDb\Entity\Repository\EventRepository($sportsDbClient, $entityManager));
$repositoryContainer->addRepository(new TheSportsDb\Entity\Repository\PlayerRepository($sportsDbClient, $entityManager));
$repositoryContainer->addRepository(new TheSportsDb\Entity\Repository\TeamRepository($sportsDbClient, $entityManager));

// Factory.
$factory = new \TheSportsDb\Entity\Factory\Factory($sportsDbClient, $entityManager);

$factoryContainer->setDefaultFactory($factory);

$db = new TheSportsDb\TheSportsDb($entityManager);