SOP.wtf/includes/ExtendedPdoInterface.php

413 lines
11 KiB
PHP

<?php
/**
*
* This file is part of Aura for PHP.
*
* @license https://opensource.org/licenses/MIT MIT
*
*/
namespace Aura\Sql;
use Aura\Sql\Parser\ParserInterface;
use Aura\Sql\Profiler\ProfilerInterface;
use PDO;
/**
*
* An interface to the Aura.Sql extended PDO object.
*
* @package Aura.Sql
*
*/
interface ExtendedPdoInterface extends PdoInterface
{
/**
*
* Connects to the database.
*
*/
public function connect();
/**
*
* Disconnects from the database.
*
*/
public function disconnect();
/**
*
* Performs a statement and returns the number of affected rows.
*
* @param string $statement The SQL statement to prepare and execute.
*
* @param array $values Values to bind to the query.
*
* @return int
*
*/
public function fetchAffected($statement, array $values = []);
/**
*
* Fetches a sequential array of rows from the database; the rows
* are represented as associative arrays.
*
* @param string $statement The SQL statement to prepare and execute.
*
* @param array $values Values to bind to the query.
*
* @return array
*
*/
public function fetchAll($statement, array $values = []);
/**
*
* Fetches an associative array of rows from the database; the rows
* are represented as associative arrays. The array of rows is keyed
* on the first column of each row.
*
* N.b.: if multiple rows have the same first column value, the last
* row with that value will override earlier rows.
*
* @param string $statement The SQL statement to prepare and execute.
*
* @param array $values Values to bind to the query.
*
* @return array
*
*/
public function fetchAssoc($statement, array $values = []);
/**
*
* Fetches the first column of rows as a sequential array.
*
* @param string $statement The SQL statement to prepare and execute.
*
* @param array $values Values to bind to the query.
*
* @return array
*
*/
public function fetchCol($statement, array $values = []);
/**
*
* Fetches multiple from the database as an associative array.
* The first column will be the index
*
* @param string $statement The SQL statement to prepare and execute.
*
* @param array $values Values to bind to the query.
*
* @param int $style a fetch style defaults to PDO::FETCH_COLUMN for single
* values, use PDO::FETCH_NAMED when fetching a multiple columns
*
* @return array
*
*/
public function fetchGroup(
$statement,
array $values = [],
$style = PDO::FETCH_COLUMN
);
/**
*
* Fetches one row from the database as an object, mapping column values
* to object properties.
*
* Warning: PDO "injects property-values BEFORE invoking the constructor -
* in other words, if your class initializes property-values to defaults
* in the constructor, you will be overwriting the values injected by
* fetchObject() !"
* <http://www.php.net/manual/en/pdostatement.fetchobject.php#111744>
*
* @param string $statement The SQL statement to prepare and execute.
*
* @param array $values Values to bind to the query.
*
* @param string $class The name of the class to create.
*
* @param array $args Arguments to pass to the object constructor.
*
* @return object
*
*/
public function fetchObject(
$statement,
array $values = [],
$class = 'stdClass',
array $args = []
);
/**
*
* Fetches a sequential array of rows from the database; the rows
* are represented as objects, where the column values are mapped to
* object properties.
*
* Warning: PDO "injects property-values BEFORE invoking the constructor -
* in other words, if your class initializes property-values to defaults
* in the constructor, you will be overwriting the values injected by
* fetchObject() !"
* <http://www.php.net/manual/en/pdostatement.fetchobject.php#111744>
*
* @param string $statement The SQL statement to prepare and execute.
*
* @param array $values Values to bind to the query.
*
* @param string $class The name of the class to create from each
* row.
*
* @param array $args Arguments to pass to each object constructor.
*
* @return array
*
*/
public function fetchObjects(
$statement,
array $values = [],
$class = 'stdClass',
array $args = []
);
/**
*
* Fetches one row from the database as an associative array.
*
* @param string $statement The SQL statement to prepare and execute.
*
* @param array $values Values to bind to the query.
*
* @return array
*
*/
public function fetchOne($statement, array $values = []);
/**
*
* Fetches an associative array of rows as key-value pairs (first
* column is the key, second column is the value).
*
* @param string $statement The SQL statement to prepare and execute.
*
* @param array $values Values to bind to the query.
*
* @return array
*
*/
public function fetchPairs($statement, array $values = []);
/**
*
* Fetches the very first value (i.e., first column of the first row).
*
* @param string $statement The SQL statement to prepare and execute.
*
* @param array $values Values to bind to the query.
*
* @return mixed
*
*/
public function fetchValue($statement, array $values = []);
/**
*
* Returns the Parser instance.
*
* @return ParserInterface
*
*/
public function getParser();
/**
*
* Return the inner PDO (if any)
*
* @return \PDO
*
*/
public function getPdo();
/**
*
* Returns the Profiler instance.
*
* @return ProfilerInterface
*
*/
public function getProfiler();
/**
*
* Quotes a multi-part (dotted) identifier name.
*
* @param string $name The multi-part identifier name.
*
* @return string The multi-part identifier name, quoted.
*
*/
public function quoteName($name);
/**
*
* Quotes a single identifier name.
*
* @param string $name The identifier name.
*
* @return string The quoted identifier name.
*
*/
public function quoteSingleName($name);
/**
*
* Is the PDO connection active?
*
* @return bool
*
*/
public function isConnected();
/**
*
* Sets the Parser instance.
*
* @param ParserInterface $parser The Parser instance.
*
*/
public function setParser(ParserInterface $parser);
/**
*
* Sets the Profiler instance.
*
* @param ProfilerInterface $profiler The Profiler instance.
*
*/
public function setProfiler(ProfilerInterface $profiler);
/**
*
* Yields rows from the database
*
* @param string $statement The SQL statement to prepare and execute.
*
* @param array $values Values to bind to the query.
*
* @return \Generator
*
*/
public function yieldAll($statement, array $values = []);
/**
*
* Yields rows from the database keyed on the first column of each row.
*
* @param string $statement The SQL statement to prepare and execute.
*
* @param array $values Values to bind to the query.
*
* @return \Generator
*
*/
public function yieldAssoc($statement, array $values = []);
/**
*
* Yields the first column of all rows
*
* @param string $statement The SQL statement to prepare and execute.
*
* @param array $values Values to bind to the query.
*
* @return \Generator
*
*/
public function yieldCol($statement, array $values = []);
/**
*
* Yields objects where the column values are mapped to object properties.
*
* Warning: PDO "injects property-values BEFORE invoking the constructor -
* in other words, if your class initializes property-values to defaults
* in the constructor, you will be overwriting the values injected by
* fetchObject() !"
* <http://www.php.net/manual/en/pdostatement.fetchobject.php#111744>
*
* @param string $statement The SQL statement to prepare and execute.
*
* @param array $values Values to bind to the query.
*
* @param string $class The name of the class to create from each
* row.
*
* @param array $args Arguments to pass to each object constructor.
*
* @return \Generator
*
*/
public function yieldObjects(
$statement,
array $values = [],
$class = 'stdClass',
array $args = []
);
/**
*
* Yields key-value pairs (first column is the key, second column is the
* value).
*
* @param string $statement The SQL statement to prepare and execute.
*
* @param array $values Values to bind to the query.
*
* @return \Generator
*
*/
public function yieldPairs($statement, array $values = []);
/**
*
* Performs a query after preparing the statement with bound values, then
* returns the result as a PDOStatement.
*
* @param string $statement The SQL statement to prepare and execute.
*
* @param array $values Values to bind to the query.
*
* @return \PDOStatement
*
*/
public function perform($statement, array $values = []);
/**
*
* Prepares an SQL statement with bound values.
*
* This method only binds values that have placeholders in the
* statement, thereby avoiding errors from PDO regarding too many bound
* values. It also binds all sequential (question-mark) placeholders.
*
* If a placeholder value is an array, the array is converted to a string
* of comma-separated quoted values; e.g., for an `IN (...)` condition.
* The quoted string is replaced directly into the statement instead of
* using `PDOStatement::bindValue()` proper.
*
* @param string $statement The SQL statement to prepare for execution.
*
* @param array $values The values to bind to the statement, if any.
*
* @return \PDOStatement
*
* @see http://php.net/manual/en/pdo.prepare.php
*
*/
public function prepareWithValues($statement, array $values = []);
}