public static Connection::open(array &$connection_options = array())
Opens a PDO connection.
Parameters
array $connection_options: The database connection settings array.
Return value
\PDO A \PDO object.
Overrides Connection::open
File
- core/lib/Drupal/Core/Database/Driver/sqlite/Connection.php, line 92
Class
- Connection
- SQLite implementation of \Drupal\Core\Database\Connection.
Namespace
Drupal\Core\Database\Driver\sqlite
Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | public static function open( array & $connection_options = array ()) { // Allow PDO options to be overridden. $connection_options += array ( 'pdo' => array (), ); $connection_options [ 'pdo' ] += array ( \PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION, // Convert numeric values to strings when fetching. \PDO::ATTR_STRINGIFY_FETCHES => TRUE, ); $pdo = new \PDO( 'sqlite:' . $connection_options [ 'database' ], '' , '' , $connection_options [ 'pdo' ]); // Create functions needed by SQLite. $pdo ->sqliteCreateFunction( 'if' , array ( __CLASS__ , 'sqlFunctionIf' )); $pdo ->sqliteCreateFunction( 'greatest' , array ( __CLASS__ , 'sqlFunctionGreatest' )); $pdo ->sqliteCreateFunction( 'pow' , 'pow' , 2); $pdo ->sqliteCreateFunction( 'exp' , 'exp' , 1); $pdo ->sqliteCreateFunction( 'length' , 'strlen' , 1); $pdo ->sqliteCreateFunction( 'md5' , 'md5' , 1); $pdo ->sqliteCreateFunction( 'concat' , array ( __CLASS__ , 'sqlFunctionConcat' )); $pdo ->sqliteCreateFunction( 'concat_ws' , array ( __CLASS__ , 'sqlFunctionConcatWs' )); $pdo ->sqliteCreateFunction( 'substring' , array ( __CLASS__ , 'sqlFunctionSubstring' ), 3); $pdo ->sqliteCreateFunction( 'substring_index' , array ( __CLASS__ , 'sqlFunctionSubstringIndex' ), 3); $pdo ->sqliteCreateFunction( 'rand' , array ( __CLASS__ , 'sqlFunctionRand' )); $pdo ->sqliteCreateFunction( 'regexp' , array ( __CLASS__ , 'sqlFunctionRegexp' )); // SQLite does not support the LIKE BINARY operator, so we overload the // non-standard GLOB operator for case-sensitive matching. Another option // would have been to override another non-standard operator, MATCH, but // that does not support the NOT keyword prefix. $pdo ->sqliteCreateFunction( 'glob' , array ( __CLASS__ , 'sqlFunctionLikeBinary' )); // Create a user-space case-insensitive collation with UTF-8 support. $pdo ->sqliteCreateCollation( 'NOCASE_UTF8' , array ( 'Drupal\Component\Utility\Unicode' , 'strcasecmp' )); // Set SQLite init_commands if not already defined. Enable the Write-Ahead // Logging (WAL) for SQLite. See https://www.drupal.org/node/2348137 and $connection_options += array ( 'init_commands' => array (), ); $connection_options [ 'init_commands' ] += array ( 'wal' => "PRAGMA journal_mode=WAL" , ); // Execute sqlite init_commands. if (isset( $connection_options [ 'init_commands' ])) { $pdo -> exec (implode( '; ' , $connection_options [ 'init_commands' ])); } return $pdo ; } |
Please login to continue.