123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204 |
- <?php
- /**
- * CakePHP(tm) : Rapid Development Framework (https://cakephp.org)
- * Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org)
- *
- * Licensed under The MIT License
- * For full copyright and license information, please see the LICENSE.txt
- * Redistributions of files must retain the above copyright notice.
- *
- * @copyright Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org)
- * @link https://cakephp.org CakePHP(tm) Project
- * @since 3.0.0
- * @license https://opensource.org/licenses/mit-license.php MIT License
- */
- namespace Cake\Database\Driver;
- use Cake\Database\Query;
- use Cake\Database\Statement\PDOStatement;
- use PDO;
- use PDOException;
- /**
- * PDO driver trait
- *
- * @deprecated 3.6.0 The methods of this trait have been added to `Driver` class.
- */
- trait PDODriverTrait
- {
- /**
- * Instance of PDO.
- *
- * @var \PDO|null
- */
- protected $_connection;
- /**
- * Establishes a connection to the database server
- *
- * @param string $dsn A Driver-specific PDO-DSN
- * @param array $config configuration to be used for creating connection
- * @return bool true on success
- */
- protected function _connect($dsn, array $config)
- {
- $connection = new PDO(
- $dsn,
- $config['username'],
- $config['password'],
- $config['flags']
- );
- $this->connection($connection);
- return true;
- }
- /**
- * Returns correct connection resource or object that is internally used
- * If first argument is passed, it will set internal connection object or
- * result to the value passed
- *
- * @param null|\PDO $connection The PDO connection instance.
- * @return \PDO connection object used internally
- */
- public function connection($connection = null)
- {
- if ($connection !== null) {
- $this->_connection = $connection;
- }
- return $this->_connection;
- }
- /**
- * Disconnects from database server
- *
- * @return void
- */
- public function disconnect()
- {
- $this->_connection = null;
- }
- /**
- * Checks whether or not the driver is connected.
- *
- * @return bool
- */
- public function isConnected()
- {
- if ($this->_connection === null) {
- $connected = false;
- } else {
- try {
- $connected = $this->_connection->query('SELECT 1');
- } catch (PDOException $e) {
- $connected = false;
- }
- }
- return (bool)$connected;
- }
- /**
- * Prepares a sql statement to be executed
- *
- * @param string|\Cake\Database\Query $query The query to turn into a prepared statement.
- * @return \Cake\Database\StatementInterface
- */
- public function prepare($query)
- {
- $this->connect();
- $isObject = $query instanceof Query;
- $statement = $this->_connection->prepare($isObject ? $query->sql() : $query);
- return new PDOStatement($statement, $this);
- }
- /**
- * Starts a transaction
- *
- * @return bool true on success, false otherwise
- */
- public function beginTransaction()
- {
- $this->connect();
- if ($this->_connection->inTransaction()) {
- return true;
- }
- return $this->_connection->beginTransaction();
- }
- /**
- * Commits a transaction
- *
- * @return bool true on success, false otherwise
- */
- public function commitTransaction()
- {
- $this->connect();
- if (!$this->_connection->inTransaction()) {
- return false;
- }
- return $this->_connection->commit();
- }
- /**
- * Rollback a transaction
- *
- * @return bool true on success, false otherwise
- */
- public function rollbackTransaction()
- {
- $this->connect();
- if (!$this->_connection->inTransaction()) {
- return false;
- }
- return $this->_connection->rollBack();
- }
- /**
- * Returns a value in a safe representation to be used in a query string
- *
- * @param mixed $value The value to quote.
- * @param string $type Type to be used for determining kind of quoting to perform
- * @return string
- */
- public function quote($value, $type)
- {
- $this->connect();
- return $this->_connection->quote($value, $type);
- }
- /**
- * Returns last id generated for a table or sequence in database
- *
- * @param string|null $table table name or sequence to get last insert value from
- * @param string|null $column the name of the column representing the primary key
- * @return string|int
- */
- public function lastInsertId($table = null, $column = null)
- {
- $this->connect();
- return $this->_connection->lastInsertId($table);
- }
- /**
- * Checks if the driver supports quoting, as PDO_ODBC does not support it.
- *
- * @return bool
- */
- public function supportsQuoting()
- {
- $this->connect();
- return $this->_connection->getAttribute(PDO::ATTR_DRIVER_NAME) !== 'odbc';
- }
- }
|