Docblock fixes and more dependency injection
This commit is contained in:
parent
0a64edd453
commit
aa5aa8eb97
@ -36,7 +36,7 @@ abstract class Abstract_Driver extends \PDO implements Driver_Interface {
|
||||
protected $statement;
|
||||
|
||||
/**
|
||||
* Character to escape indentifiers
|
||||
* Character to escape identifiers
|
||||
* @var string
|
||||
*/
|
||||
protected $escape_char = '"';
|
||||
@ -100,6 +100,7 @@ abstract class Abstract_Driver extends \PDO implements Driver_Interface {
|
||||
/**
|
||||
* Allow invoke to work on table object
|
||||
*
|
||||
* @codeCoverageIgnore
|
||||
* @param string $name
|
||||
* @param array $args
|
||||
* @return mixed
|
||||
@ -120,6 +121,30 @@ abstract class Abstract_Driver extends \PDO implements Driver_Interface {
|
||||
// ! Concrete functions that can be overridden in child classes
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Get the SQL class for the current driver
|
||||
*
|
||||
* @return SQL_Interface
|
||||
*/
|
||||
public function get_sql()
|
||||
{
|
||||
return $this->sql;
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Get the Util class for the current driver
|
||||
*
|
||||
* @return Abstract_Util
|
||||
*/
|
||||
public function get_util()
|
||||
{
|
||||
return $this->util;
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Simplifies prepared statements for database queries
|
||||
*
|
||||
@ -193,7 +218,7 @@ abstract class Abstract_Driver extends \PDO implements Driver_Interface {
|
||||
// before quoting it
|
||||
if ( ! empty($this->table_prefix))
|
||||
{
|
||||
// Split indentifier by period, will split into:
|
||||
// Split identifier by period, will split into:
|
||||
// database.schema.table OR
|
||||
// schema.table OR
|
||||
// database.table OR
|
||||
@ -436,7 +461,7 @@ abstract class Abstract_Driver extends \PDO implements Driver_Interface {
|
||||
*/
|
||||
public function get_columns($table)
|
||||
{
|
||||
return $this->driver_query($this->sql->column_list($this->prefix_table($table)), FALSE);
|
||||
return $this->driver_query($this->get_sql()->column_list($this->prefix_table($table)), FALSE);
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
@ -449,7 +474,7 @@ abstract class Abstract_Driver extends \PDO implements Driver_Interface {
|
||||
*/
|
||||
public function get_fks($table)
|
||||
{
|
||||
return $this->driver_query($this->sql->fk_list($table), FALSE);
|
||||
return $this->driver_query($this->get_sql()->fk_list($table), FALSE);
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
@ -462,7 +487,7 @@ abstract class Abstract_Driver extends \PDO implements Driver_Interface {
|
||||
*/
|
||||
public function get_indexes($table)
|
||||
{
|
||||
return $this->driver_query($this->sql->index_list($this->prefix_table($table)), FALSE);
|
||||
return $this->driver_query($this->get_sql()->index_list($this->prefix_table($table)), FALSE);
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
@ -491,7 +516,7 @@ abstract class Abstract_Driver extends \PDO implements Driver_Interface {
|
||||
// Call the appropriate method, if it exists
|
||||
if (is_string($query) && method_exists($this->sql, $query))
|
||||
{
|
||||
$query = $this->sql->$query();
|
||||
$query = $this->get_sql()->$query();
|
||||
}
|
||||
|
||||
// Return if the values are returned instead of a query,
|
||||
|
@ -1,46 +1,46 @@
|
||||
<?php
|
||||
/**
|
||||
* Query
|
||||
*
|
||||
* Free Query Builder / Database Abstraction Layer
|
||||
*
|
||||
* @author Timothy J. Warren
|
||||
* @copyright Copyright (c) 2012 - 2014
|
||||
* @link https://github.com/aviat4ion/Query
|
||||
* @license http://philsturgeon.co.uk/code/dbad-license
|
||||
* @package Query
|
||||
*/
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
namespace Query\Driver;
|
||||
|
||||
/**
|
||||
* parent for database manipulation subclasses
|
||||
*
|
||||
* @package Query
|
||||
* @subpackage Drivers
|
||||
*/
|
||||
abstract class Abstract_SQL implements SQL_Interface {
|
||||
|
||||
/**
|
||||
* Limit clause
|
||||
*
|
||||
* @param string $sql
|
||||
* @param int $limit
|
||||
* @param int $offset
|
||||
* @return string
|
||||
*/
|
||||
public function limit($sql, $limit, $offset=FALSE)
|
||||
{
|
||||
$sql .= "\nLIMIT {$limit}";
|
||||
|
||||
if (is_numeric($offset))
|
||||
{
|
||||
$sql .= " OFFSET {$offset}";
|
||||
}
|
||||
|
||||
return $sql;
|
||||
}
|
||||
}
|
||||
// End of abstract_sql.php
|
||||
<?php
|
||||
/**
|
||||
* Query
|
||||
*
|
||||
* Free Query Builder / Database Abstraction Layer
|
||||
*
|
||||
* @author Timothy J. Warren
|
||||
* @copyright Copyright (c) 2012 - 2014
|
||||
* @link https://github.com/aviat4ion/Query
|
||||
* @license http://philsturgeon.co.uk/code/dbad-license
|
||||
* @package Query
|
||||
*/
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
namespace Query\Driver;
|
||||
|
||||
/**
|
||||
* parent for database manipulation subclasses
|
||||
*
|
||||
* @package Query
|
||||
* @subpackage Drivers
|
||||
*/
|
||||
abstract class Abstract_SQL implements SQL_Interface {
|
||||
|
||||
/**
|
||||
* Limit clause
|
||||
*
|
||||
* @param string $sql
|
||||
* @param int $limit
|
||||
* @param int|bool $offset
|
||||
* @return string
|
||||
*/
|
||||
public function limit($sql, $limit, $offset=FALSE)
|
||||
{
|
||||
$sql .= "\nLIMIT {$limit}";
|
||||
|
||||
if (is_numeric($offset))
|
||||
{
|
||||
$sql .= " OFFSET {$offset}";
|
||||
}
|
||||
|
||||
return $sql;
|
||||
}
|
||||
}
|
||||
// End of abstract_sql.php
|
||||
|
@ -117,6 +117,7 @@ final class Connection_Manager {
|
||||
}
|
||||
else
|
||||
{
|
||||
// You should actually connect before trying to get a connection...
|
||||
throw new \InvalidArgumentException("The specified connection does not exist");
|
||||
}
|
||||
}
|
||||
@ -128,7 +129,6 @@ final class Connection_Manager {
|
||||
*
|
||||
* @param \ArrayObject $params
|
||||
* @return Query_Builder
|
||||
* @throws BadConnectionException
|
||||
*/
|
||||
public function connect(\ArrayObject $params)
|
||||
{
|
||||
@ -147,8 +147,9 @@ final class Connection_Manager {
|
||||
$db->table_prefix = $params->prefix;
|
||||
}
|
||||
|
||||
// Create the Query Builder object
|
||||
$conn = new Query_Builder($db);
|
||||
// Create Query Builder object
|
||||
$conn = new Query_Builder($db, new Query_Parser($db));
|
||||
|
||||
|
||||
// Save it for later
|
||||
if (isset($params->alias))
|
||||
|
@ -30,7 +30,6 @@ interface Driver_Interface {
|
||||
* @param string $username
|
||||
* @param string $password
|
||||
* @param array $driver_options
|
||||
* @return void
|
||||
*/
|
||||
public function __construct($dsn, $username=NULL, $password=NULL, array $driver_options = array());
|
||||
|
||||
@ -140,5 +139,19 @@ interface Driver_Interface {
|
||||
* @return \PDOStatement
|
||||
*/
|
||||
public function prepare_execute($sql, $params);
|
||||
|
||||
/**
|
||||
* Get the SQL class for the current driver
|
||||
*
|
||||
* @return SQL_Interface
|
||||
*/
|
||||
public function get_sql();
|
||||
|
||||
/**
|
||||
* Get the Util class for the current driver
|
||||
*
|
||||
* @return Abstract_Util
|
||||
*/
|
||||
public function get_util();
|
||||
}
|
||||
// End of driver_interface.php
|
||||
|
@ -100,7 +100,7 @@ class Query_Builder implements Query_Builder_Interface {
|
||||
|
||||
/**
|
||||
* Value for limit string
|
||||
* @var type string
|
||||
* @var string
|
||||
*/
|
||||
protected $limit;
|
||||
|
||||
@ -162,14 +162,14 @@ class Query_Builder implements Query_Builder_Interface {
|
||||
protected $parser;
|
||||
|
||||
/**
|
||||
* Alias to $this->db->util
|
||||
* @var DB_Util
|
||||
* Alias to driver util class
|
||||
* @var \Query\Driver\Abstract_Util
|
||||
*/
|
||||
public $util;
|
||||
|
||||
/**
|
||||
* Alias to $this->db->sql
|
||||
* @var SQL_Interface
|
||||
* Alias to driver sql class
|
||||
* @var \Query\Driver\SQL_Interface
|
||||
*/
|
||||
public $sql;
|
||||
|
||||
@ -181,19 +181,19 @@ class Query_Builder implements Query_Builder_Interface {
|
||||
* Constructor
|
||||
*
|
||||
* @param \Query\Driver\Driver_Interface $db
|
||||
* @param Query_Parser $parser
|
||||
*/
|
||||
public function __construct(Driver_Interface $db)
|
||||
public function __construct(Driver_Interface $db, Query_Parser $parser)
|
||||
{
|
||||
// Inject driver and parser
|
||||
$this->db = $db;
|
||||
|
||||
// Instantiate the Query Parser
|
||||
$this->parser = new Query_Parser($this);
|
||||
$this->parser = $parser;
|
||||
|
||||
$this->queries['total_time'] = 0;
|
||||
|
||||
// Make things just slightly shorter
|
||||
$this->sql = $this->db->sql;
|
||||
$this->util = $this->db->util;
|
||||
// Alias driver sql and util classes
|
||||
$this->sql = $this->db->get_sql();
|
||||
$this->util = $this->db->get_util();
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
@ -215,7 +215,7 @@ class Query_Builder implements Query_Builder_Interface {
|
||||
* Method to simplify select_ methods
|
||||
*
|
||||
* @param string $field
|
||||
* @param string $as
|
||||
* @param string|bool $as
|
||||
* @return string
|
||||
*/
|
||||
protected function _select($field, $as = FALSE)
|
||||
@ -295,7 +295,7 @@ class Query_Builder implements Query_Builder_Interface {
|
||||
* Selects the minimum value of a field from a query
|
||||
*
|
||||
* @param string $field
|
||||
* @param string $as
|
||||
* @param string|bool $as
|
||||
* @return Query_Builder
|
||||
*/
|
||||
public function select_min($field, $as=FALSE)
|
||||
@ -311,7 +311,7 @@ class Query_Builder implements Query_Builder_Interface {
|
||||
* Selects the average value of a field from a query
|
||||
*
|
||||
* @param string $field
|
||||
* @param string $as
|
||||
* @param string|bool $as
|
||||
* @return Query_Builder
|
||||
*/
|
||||
public function select_avg($field, $as=FALSE)
|
||||
@ -327,7 +327,7 @@ class Query_Builder implements Query_Builder_Interface {
|
||||
* Selects the sum of a field from a query
|
||||
*
|
||||
* @param string $field
|
||||
* @param string $as
|
||||
* @param string|bool $as
|
||||
* @return Query_Builder
|
||||
*/
|
||||
public function select_sum($field, $as=FALSE)
|
||||
@ -975,7 +975,7 @@ class Query_Builder implements Query_Builder_Interface {
|
||||
* @param $table
|
||||
* @param int|bool $limit
|
||||
* @param int|bool $offset
|
||||
* @return PDOStatement
|
||||
* @return \PDOStatement
|
||||
*/
|
||||
public function get($table='', $limit=FALSE, $offset=FALSE)
|
||||
{
|
||||
@ -986,7 +986,7 @@ class Query_Builder implements Query_Builder_Interface {
|
||||
}
|
||||
|
||||
// Set the limit, if it exists
|
||||
if ($limit !== FALSE)
|
||||
if (is_int($limit))
|
||||
{
|
||||
$this->limit($limit, $offset);
|
||||
}
|
||||
@ -997,13 +997,13 @@ class Query_Builder implements Query_Builder_Interface {
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Convience method for get() with a where clause
|
||||
* Convenience method for get() with a where clause
|
||||
*
|
||||
* @param string $table
|
||||
* @param array $where
|
||||
* @param int $limit
|
||||
* @param int $offset
|
||||
* @return PDOStatement
|
||||
* @param int|bool $limit
|
||||
* @param int|bool $offset
|
||||
* @return \PDOStatement
|
||||
*/
|
||||
public function get_where($table, $where=array(), $limit=FALSE, $offset=FALSE)
|
||||
{
|
||||
@ -1061,7 +1061,7 @@ class Query_Builder implements Query_Builder_Interface {
|
||||
*
|
||||
* @param string $table
|
||||
* @param mixed $data
|
||||
* @return PDOStatement
|
||||
* @return \PDOStatement
|
||||
*/
|
||||
public function insert($table, $data=array())
|
||||
{
|
||||
@ -1081,7 +1081,7 @@ class Query_Builder implements Query_Builder_Interface {
|
||||
*
|
||||
* @param string $table
|
||||
* @param array $data
|
||||
* @return PDOStatement
|
||||
* @return \PDOStatement
|
||||
*/
|
||||
public function insert_batch($table, $data=array())
|
||||
{
|
||||
@ -1100,7 +1100,7 @@ class Query_Builder implements Query_Builder_Interface {
|
||||
*
|
||||
* @param string $table
|
||||
* @param mixed $data
|
||||
* @return PDOStatement
|
||||
* @return \PDOStatement
|
||||
*/
|
||||
public function update($table, $data=array())
|
||||
{
|
||||
@ -1120,7 +1120,7 @@ class Query_Builder implements Query_Builder_Interface {
|
||||
*
|
||||
* @param string $table
|
||||
* @param mixed $where
|
||||
* @return PDOStatement
|
||||
* @return \PDOStatement
|
||||
*/
|
||||
public function delete($table, $where='')
|
||||
{
|
||||
@ -1143,7 +1143,7 @@ class Query_Builder implements Query_Builder_Interface {
|
||||
* @param string $type
|
||||
* @param string $table
|
||||
* @param bool $reset
|
||||
* @resturn string
|
||||
* @return string
|
||||
*/
|
||||
protected function _get_compile($type, $table, $reset)
|
||||
{
|
||||
@ -1271,7 +1271,7 @@ class Query_Builder implements Query_Builder_Interface {
|
||||
* @param string $table
|
||||
* @param string $sql
|
||||
* @param array|null $vals
|
||||
* @return PDOStatement
|
||||
* @return \PDOStatement
|
||||
*/
|
||||
protected function _run($type, $table, $sql=NULL, $vals=NULL)
|
||||
{
|
||||
@ -1311,7 +1311,7 @@ class Query_Builder implements Query_Builder_Interface {
|
||||
* @param string $name
|
||||
* @param array $params
|
||||
* @return mixed
|
||||
* @throws BadMethodCallException
|
||||
* @throws \BadMethodCallException
|
||||
*/
|
||||
public function __call($name, $params)
|
||||
{
|
||||
|
@ -56,9 +56,9 @@ class Query_Parser {
|
||||
/**
|
||||
* Constructor/entry point into parser
|
||||
*
|
||||
* @param \Query\Query_Builder $db
|
||||
* @param Query_Builder $db
|
||||
*/
|
||||
public function __construct(\Query\Query_Builder $db)
|
||||
public function __construct(\Query\Driver\Driver_Interface $db)
|
||||
{
|
||||
$this->db = $db;
|
||||
}
|
||||
@ -66,9 +66,10 @@ class Query_Parser {
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Public parser method for seting the parse string
|
||||
* Public parser method for setting the parse string
|
||||
*
|
||||
* @param string $sql
|
||||
* @return array
|
||||
*/
|
||||
protected function parse_join($sql)
|
||||
{
|
||||
@ -112,6 +113,8 @@ class Query_Parser {
|
||||
return implode('', $parts['combined']);
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Returns a more useful match array
|
||||
*
|
||||
|
@ -57,7 +57,8 @@ class Firebird_Result extends \PDOStatement {
|
||||
* the query
|
||||
*
|
||||
* @param resource $link
|
||||
* @param [\Query\Driver\Firebird] $db
|
||||
* @param \Query\Driver\Firebird|null $db
|
||||
* @return void
|
||||
*/
|
||||
public function __construct($link, Driver_Interface $db = NULL)
|
||||
{
|
||||
|
@ -28,7 +28,7 @@ class Firebird_SQL extends Abstract_SQL {
|
||||
*
|
||||
* @param string $sql
|
||||
* @param int $limit
|
||||
* @param int $offset
|
||||
* @param int|bool $offset
|
||||
* @return string
|
||||
*/
|
||||
public function limit($sql, $limit, $offset=FALSE)
|
||||
|
@ -28,7 +28,7 @@ namespace Query\Driver;
|
||||
class Firebird_Util extends Abstract_Util {
|
||||
|
||||
/**
|
||||
* Convienience public function to generate sql for creating a db table
|
||||
* Convenience public function to generate sql for creating a db table
|
||||
*
|
||||
* @deprecated Use the table builder class instead
|
||||
* @param string $name
|
||||
|
@ -153,13 +153,6 @@ abstract class QBTest extends Query_TestCase {
|
||||
$this->assertIsA($query, 'PDOStatement');
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
public function testGetViews()
|
||||
{
|
||||
$this->assertTrue(is_array($this->db->get_views()));
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
// ! Select tests
|
||||
// --------------------------------------------------------------------------
|
||||
|
@ -94,5 +94,12 @@ abstract class DBTest extends Query_TestCase {
|
||||
$this->assertTrue(is_array($keys));
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
public function testGetViews()
|
||||
{
|
||||
$this->assertTrue(is_array($this->db->get_views()));
|
||||
}
|
||||
|
||||
}
|
||||
// End of db_test.php
|
Binary file not shown.
Loading…
Reference in New Issue
Block a user