1: <?php
2:
3: namespace PHPixie\Database;
4:
5: abstract class Driver
6: {
7: protected $database;
8: protected $conditions;
9: protected $parsers = array();
10: protected $connections = array();
11:
12: public function __construct($database)
13: {
14: $this->database = $database;
15: }
16:
17: public function conditions()
18: {
19: if ($this->conditions === null)
20: $this->conditions = $this->buildConditions();
21:
22: return $this->conditions;
23: }
24:
25: public function parser($connectionName)
26: {
27: if (!isset($this->parsers[$connectionName]))
28: $this->parsers[$connectionName] = $this->buildParserInstance($connectionName);
29:
30: return $this->parsers[$connectionName];
31: }
32:
33: public function query($type = 'select', $connectionName = 'default')
34: {
35: $connection = $this->database->get($connectionName);
36: $config = $connection->config();
37: $parser = $this->parser($connectionName);
38: $builder = $this->queryBuilder();
39:
40: return $this->buildQuery($type, $connection, $parser, $builder);
41: }
42:
43: abstract public function queryBuilder();
44: abstract public function buildConditions();
45: abstract public function buildConnection($name, $config);
46: abstract public function buildParserInstance($connectionName);
47: abstract public function buildQuery($type, $connection, $parser, $builder);
48: abstract public function result($cursor);
49: }
50: