1: <?php
2:
3: namespace PHPixie\Database\Driver;
4:
5: class PDO extends \PHPixie\Database\Type\SQL\Driver
6: {
7: public function buildConnection($connectionName, $config)
8: {
9: return new \PHPixie\Database\Driver\PDO\Connection($this, $connectionName, $config);
10: }
11:
12: public function buildParserInstance($connectionName)
13: {
14: $connection = $this->database->get($connectionName);
15: $adapterName = $connection->adapterName();
16: $config = $connection->config();
17: $fragmentParser = $this->fragmentParser($adapterName);
18: $operatorParser = $this->operatorParser($adapterName, $fragmentParser);
19: $conditionsParser = $this->conditionsParser($adapterName, $operatorParser);
20:
21: return $this->buildParser($adapterName, $config, $fragmentParser, $conditionsParser);
22: }
23:
24: public function buildConditions()
25: {
26: return new \PHPixie\Database\Driver\PDO\Conditions();
27: }
28:
29: public function adapter($name, $config, $connection)
30: {
31: $class = '\PHPixie\Database\Driver\PDO\Adapter\\'.ucfirst($name);
32:
33: return new $class($config, $connection);
34: }
35:
36: public function buildParser($adapterName, $config, $fragmentParser, $conditionsParser)
37: {
38: $class = '\PHPixie\Database\Driver\PDO\Adapter\\'.ucfirst($adapterName).'\Parser';
39:
40: return new $class($this->database, $this, $config, $fragmentParser, $conditionsParser);
41: }
42:
43: public function fragmentParser($adapterName)
44: {
45: $class = '\PHPixie\Database\Driver\PDO\Adapter\\'.ucfirst($adapterName).'\Parser\Fragment';
46:
47: return new $class;
48: }
49:
50: public function operatorParser($adapterName, $fragmentParser)
51: {
52: $class = '\PHPixie\Database\Driver\PDO\Adapter\\'.ucfirst($adapterName).'\Parser\Operator';
53:
54: return new $class($this->database, $fragmentParser);
55: }
56:
57: public function conditionsParser($adapterName, $operatorParser)
58: {
59: $class = '\PHPixie\Database\Driver\PDO\Adapter\\'.ucfirst($adapterName).'\Parser\Conditions';
60:
61: return new $class($this->database, $operatorParser);
62: }
63:
64: public function queryBuilder()
65: {
66: $conditions = $this->conditions();
67: $values = $this->database->values();
68:
69: return new \PHPixie\Database\Driver\PDO\Query\Builder($conditions, $values);
70: }
71:
72: public function buildQuery($type, $connection, $parser, $builder)
73: {
74: $class = '\PHPixie\Database\Driver\PDO\Query\Type\\'.ucfirst($type);
75:
76: return new $class($connection, $parser, $builder);
77: }
78:
79: public function result($statement)
80: {
81: return new \PHPixie\Database\Driver\PDO\Result($statement);
82: }
83:
84: }
85: