Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
10 / 10
100.00% covered (success)
100.00%
2 / 2
CRAP
100.00% covered (success)
100.00%
1 / 1
Application
100.00% covered (success)
100.00%
10 / 10
100.00% covered (success)
100.00%
2 / 2
2
100.00% covered (success)
100.00%
1 / 1
 __construct
100.00% covered (success)
100.00%
9 / 9
100.00% covered (success)
100.00%
1 / 1
1
 container
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2
3declare(strict_types=1);
4
5namespace Alistaircol\Hta;
6
7use Alistaircol\Hta\Domain\Basket\Concerns\BasketInterface;
8use Alistaircol\Hta\Domain\Basket\InMemoryBasket;
9use Alistaircol\Hta\Domain\Basket\SqliteBasket;
10use League\Container\Container;
11use PDO;
12
13class Application
14{
15    protected Container $container;
16
17    public function __construct()
18    {
19        $this->container = new Container();
20
21        // Default is inmemory
22        $this->container->add(BasketInterface::class, InMemoryBasket::class);
23
24        // Bind InMemoryBasket to the basket container as default
25        $this->container->add(InMemoryBasket::class);
26
27        // Add sqlite basket implementation to container
28        $this->container->add(SqliteBasket::class)->addMethodCall('setPdo', [PDO::class]);
29
30        // Add PDO implementation to container
31        // TODO: replace with .env and use vlucas/dotenv but this is a prototype
32        $this->container->add(PDO::class)
33            ->addArgument('sqlite:data.sqlite')
34            ->addArgument('username')
35            ->addArgument('password')
36            ->addArgument([/* options */]);
37    }
38
39    public function container(): Container
40    {
41        return $this->container;
42    }
43}