1: <?php
2: 3: 4: 5: 6: 7: 8: 9:
10:
11: namespace Autarky\Database;
12:
13: use Autarky\Container\ContainerInterface;
14: use Autarky\Container\Factory\Definition;
15: use Autarky\Providers\AbstractProvider;
16:
17: 18: 19: 20:
21: class DatabaseProvider extends AbstractProvider
22: {
23: 24: 25:
26: public function register()
27: {
28: $dic = $this->app->getContainer();
29:
30: $dic->share('Autarky\Database\PDOInstantiator');
31: $dic->alias('Autarky\Database\PDOInstantiator',
32: 'Autarky\Database\PDOInstantiatorInterface');
33:
34: $dic->share('Autarky\Database\ConnectionFactory');
35: $dic->alias('Autarky\Database\ConnectionFactory',
36: 'Autarky\Database\ConnectionFactoryInterface');
37:
38: $dic->define('Autarky\Database\ConnectionManager', function(ContainerInterface $dic) {
39: return new ConnectionManager(
40: $this->app->getConfig(),
41: $dic->resolve('Autarky\Database\ConnectionFactoryInterface')
42: );
43: });
44: $dic->share('Autarky\Database\ConnectionManager');
45:
46: $factory = new Definition(['Autarky\Database\ConnectionManager', 'getPdo']);
47: $factory->addScalarArgument('$connection', 'string', false, null);
48: $dic->define('PDO', $factory);
49: }
50: }
51: