Browse Source

Remove PDOInterface to prevent conflicts in method parameters with native PDO object

keep-around/8401cceb0daec6282b2c6cd20ef965592a322aa6
Timothy Warren 1 year ago
parent
commit
8401cceb0d
8 changed files with 16 additions and 178 deletions
  1. +3
    -2
      phpstan.neon
  2. +4
    -9
      src/ConnectionManager.php
  3. +4
    -9
      src/Drivers/AbstractDriver.php
  4. +1
    -1
      src/Drivers/DriverInterface.php
  5. +0
    -146
      src/Drivers/PDOInterface.php
  6. +0
    -10
      src/QueryBuilder.php
  7. +1
    -1
      tests/BaseDriverTest.php
  8. +3
    -0
      tests/BaseQueryBuilderTest.php

+ 3
- 2
phpstan.neon View File

@@ -2,5 +2,6 @@ parameters:
autoload_files:
- %rootDir%/../../../tests/bootstrap.php
ignoreErrors:
- '#Access to an undefined property Aviat\\\Ion\\\Friend::\$[a-zA-Z0-9_]+#'
- '#Call to an undefined method Aviat\\\Ion\\\Friend::[a-zA-Z0-9_]+\(\)#'
- '#Access to an undefined property Query\\QueryBuilderInterface::\$[a-zA-Z0-9_]+#'
- '#Call to an undefined method Query\\QueryBuilderInterface::[a-zA-Z0-9_]+\(\)#'
- '#Call to an undefined method Query\\Drivers\\DriverInterface::[a-zA-Z0-9_]+\(\)#'

+ 4
- 9
src/ConnectionManager.php View File

@@ -31,9 +31,9 @@ final class ConnectionManager {

/**
* Class instance variable
* @var ConnectionManager
* @var ConnectionManager|null
*/
private static $instance = NULL;
private static $instance;

/**
* Private constructor to prevent multiple instances
@@ -62,7 +62,7 @@ final class ConnectionManager {
*/
public function __sleep()
{
throw new DomainException("No serializing of singleton");
throw new DomainException('No serializing of singleton');
}

/**
@@ -112,7 +112,7 @@ final class ConnectionManager {
}

// You should actually connect before trying to get a connection...
throw new InvalidArgumentException("The specified connection does not exist");
throw new InvalidArgumentException('The specified connection does not exist');
}

/**
@@ -214,11 +214,6 @@ final class ConnectionManager {
*/
private function createDsn(string $dbtype, \stdClass $params): string
{
if (strtolower($dbtype) === 'pdo_firebird')
{
$dbtype = 'firebird';
}

$pairs = [];

if ( ! empty($params->database))

+ 4
- 9
src/Drivers/AbstractDriver.php View File

@@ -22,11 +22,10 @@ use PDOStatement;
* Base Database class
*
* Extends PDO to simplify cross-database issues
*
* @package Query
* @subpackage Drivers
*/
abstract class AbstractDriver extends PDO implements DriverInterface {
abstract class AbstractDriver
extends PDO
implements DriverInterface {

/**
* Reference to the last executed query
@@ -536,11 +535,7 @@ abstract class AbstractDriver extends PDO implements DriverInterface {
public function insertBatch($table, $data=[])
{
$data = (array) $data;
$firstRow = current($data);
if (is_scalar($firstRow))
{
return NULL;
}
$firstRow = (array) current($data);

// Values for insertion
$vals = [];

+ 1
- 1
src/Drivers/DriverInterface.php View File

@@ -17,7 +17,7 @@ namespace Query\Drivers;
/**
* PDO Interface to implement for database drivers
*/
interface DriverInterface extends PDOInterface {
interface DriverInterface {

/**
* Constructor/Connection method

+ 0
- 146
src/Drivers/PDOInterface.php View File

@@ -1,146 +0,0 @@
<?php declare(strict_types=1);
/**
* Query
*
* SQL Query Builder / Database Abstraction Layer
*
* PHP version 7.1
*
* @package Query
* @author Timothy J. Warren <tim@timshomepage.net>
* @copyright 2012 - 2018 Timothy J. Warren
* @license http://www.opensource.org/licenses/mit-license.html MIT License
* @link https://git.timshomepage.net/aviat4ion/Query
*/
namespace Query\Drivers;

use PDO;
use PDOException;
use PDOStatement;

/**
* Interface describing the PDO class in PHP
*/
interface PDOInterface {

/**
* Creates a PDO instance representing a connection to a database
*
* @param string $dsn
* @param string $username
* @param string $password
* @param array $options
* @throws PDOException
*/
public function __construct($dsn, $username, $password, array $options = []);

/**
* Initiates a transaction
*
* @throws PDOException
* @return boolean
*/
public function beginTransaction();

/**
* Commits a transaction
*
* @throws PDOException
* @return boolean
*/
public function commit();

/**
* Fetch the SQLSTATE associated with the last operation on the database handle
*
* @return mixed
*/
public function errorCode();

/**
* Fetch extended error information associated with the last operation on the database handle
*
* @return array
*/
public function errorInfo();

/**
* Execute an SQL statement and return the number of affected rows
*
* @param string $statement
* @return int
*/
public function exec($statement);

/**
* Retrieve a database connection attribute
*
* @param int $attribute
* @return mixed
*/
public function getAttribute($attribute);

/**
* Return an array of available PDO drivers
*
* @return array
*/
public static function getAvailableDrivers();

/**
* Checks if inside a transaction
*
* @return boolean
*/
public function inTransaction();

/**
* Returns teh ID of the last inserted row or sequence value
*
* @param string $name Name of the sequence object from which the ID should be returned
* @return string
*/
public function lastInsertId($name = NULL);

/**
* Prepares a statement for execution and returns a statement object
*
* @param string $statement
* @param array $options
* @return PDOStatement
*/
public function prepare($statement, $options = NULL);

/**
* Executes an SQL statement, returning a result set as a PDOStatement object
*
* @return PDOStatement
*/
public function query();

/**
* Quotes a string for use in a query
*
* @param string $string
* @param int $parameterType
* @return string|false
*/
public function quote($string, $parameterType = PDO::PARAM_STR);

/**
* Rolls back a transaction
*
* @throws PDOException
* @return boolean
*/
public function rollBack();

/**
* Set an attribute
*
* @param int $attribute
* @param mixed $value
* @return boolean
*/
public function setAttribute($attribute, $value);
}

+ 0
- 10
src/QueryBuilder.php View File

@@ -24,7 +24,6 @@ use Query\Drivers\{

/**
* Convenience class for creating sql queries
* @method query(mixed $sql): PDOStatement;
*/
class QueryBuilder implements QueryBuilderInterface {

@@ -274,15 +273,6 @@ class QueryBuilder implements QueryBuilderInterface {
throw new BadMethodCallException('Method does not exist');
}

// --------------------------------------------------------------------------
// ! Driver setters
// --------------------------------------------------------------------------

public function setDriver(DriverInterface $driver)
{

}

// --------------------------------------------------------------------------
// ! Select Queries
// --------------------------------------------------------------------------

+ 1
- 1
tests/BaseDriverTest.php View File

@@ -22,7 +22,7 @@ namespace Query\Tests;
abstract class BaseDriverTest extends TestCase {

/**
* @var \Query\QueryBuilder
* @var \Query\QueryBuilderInterface|null
*/
protected static $db;


+ 3
- 0
tests/BaseQueryBuilderTest.php View File

@@ -21,6 +21,9 @@ use PDO;
*/
abstract class BaseQueryBuilderTest extends TestCase {

/**
* @var \Query\QueryBuilderInterface|null
*/
protected static $db;

public function __destruct()

Loading…
Cancel
Save