Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
4 / 4
CRAP
100.00% covered (success)
100.00%
13 / 13
Driver
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
10 / 10
12
100.00% covered (success)
100.00%
13 / 13
 __construct
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
2 / 2
 conditions
100.00% covered (success)
100.00%
1 / 1
2
100.00% covered (success)
100.00%
3 / 3
 parser
100.00% covered (success)
100.00%
1 / 1
2
100.00% covered (success)
100.00%
3 / 3
 query
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
5 / 5
 queryBuilder
100.00% covered (success)
100.00%
1 / 1
1  
 
 buildConditions
100.00% covered (success)
100.00%
1 / 1
1  
 
 buildConnection
100.00% covered (success)
100.00%
1 / 1
1  
 
 buildParserInstance
100.00% covered (success)
100.00%
1 / 1
1  
 
 buildQuery
100.00% covered (success)
100.00%
1 / 1
1  
 
 result
100.00% covered (success)
100.00%
1 / 1
1  
 
<?php
namespace PHPixie\Database;
abstract class Driver
{
    protected $database;
    protected $conditions;
    protected $parsers =  array();
    protected $connections = array();
    public function __construct($database)
    {
        $this->database = $database;
    }
    
    public function conditions()
    {
        if ($this->conditions === null)
            $this->conditions = $this->buildConditions();
        return $this->conditions;
    }
    public function parser($connectionName)
    {
        if (!isset($this->parsers[$connectionName]))
            $this->parsers[$connectionName] = $this->buildParserInstance($connectionName);
        return $this->parsers[$connectionName];
    }
    public function query($type = 'select', $connectionName = 'default')
    {
        $connection = $this->database->get($connectionName);
        $config     = $connection->config();
        $parser     = $this->parser($connectionName);
        $builder    = $this->queryBuilder();
        return $this->buildQuery($type, $connection, $parser, $builder);
    }
    abstract public function queryBuilder();
    abstract public function buildConditions();
    abstract public function buildConnection($name, $config);
    abstract public function buildParserInstance($connectionName);
    abstract public function buildQuery($type, $connection, $parser, $builder);
    abstract public function result($cursor);
}