private function DriverAttributes::intiailize in Drupal driver for SQL Server and SQL Azure 8.2
Gets all available attributes as a flattened key-value array.
1 call to DriverAttributes::intiailize()
- DriverAttributes::__construct in drivers/
lib/ Drupal/ Driver/ Database/ sqlsrv/ Scheme/ DriverAttributes.php
File
- drivers/
lib/ Drupal/ Driver/ Database/ sqlsrv/ Scheme/ DriverAttributes.php, line 40
Class
- DriverAttributes
- Type class for the driver attributes.
Namespace
Drupal\Driver\Database\sqlsrv\SchemeCode
private function intiailize() {
// These are the native attributes...
$atts = [
'ATTR_ORACLE_NULLS' => [
'code' => \PDO::ATTR_ORACLE_NULLS,
],
'ATTR_CASE' => [
'code' => \PDO::ATTR_CASE,
],
'ATTR_CLIENT_VERSION' => [
'code' => \PDO::ATTR_CLIENT_VERSION,
],
'ATTR_SERVER_INFO' => [
'code' => \PDO::ATTR_SERVER_INFO,
],
'ATTR_ERRMODE' => [
'code' => \PDO::ATTR_ERRMODE,
],
'SQLSRV_ATTR_ENCODING' => [
'code' => \PDO::SQLSRV_ATTR_ENCODING,
],
'SQLSRV_ATTR_DIRECT_QUERY' => [
'code' => \PDO::SQLSRV_ATTR_DIRECT_QUERY,
],
'SQLSRV_ATTR_CLIENT_BUFFER_MAX_KB_SIZE' => [
'code' => \PDO::SQLSRV_ATTR_CLIENT_BUFFER_MAX_KB_SIZE,
],
'SQLSRV_ATTR_FETCHES_NUMERIC_TYPE' => [
'code' => \PDO::SQLSRV_ATTR_FETCHES_NUMERIC_TYPE,
],
'ATTR_STRINGIFY_FETCHES' => [
'code' => \PDO::ATTR_STRINGIFY_FETCHES,
],
'ATTR_STATEMENT_CLASS' => [
'code' => \PDO::ATTR_STATEMENT_CLASS,
],
];
$result = [];
// Flatten the array....
foreach ($atts as $name => $spec) {
$value = $this->connection
->getAttribute($spec['code']);
if (!is_array($value)) {
$value = [
'' => $value,
];
}
foreach ($value as $key => $v) {
if (!is_scalar($v)) {
continue;
}
$n = $key ? $name . ".{$key}" : $name;
$result[$n] = [
'value' => $v,
'pretty' => $v,
];
}
}
// Theses are the expanded ones...
$prettify = [
'ATTR_CASE' => [
'prettify' => [
$this,
'pdoFriendlyNameCase',
],
],
'ATTR_ERRMODE' => [
'prettify' => [
$this,
'pdoFriendlyNameError',
],
],
'SQLSRV_ATTR_ENCODING' => [
'prettify' => [
$this,
'pdoFriendlyNameEncoding',
],
],
'ATTR_STRINGIFY_FETCHES' => [
'prettify' => [
$this,
'pdoFriendlyNameBoolean',
],
],
'ATTR_STRINGIFY_FETCHES' => [
'prettify' => [
$this,
'pdoFriendlyNameBoolean',
],
],
'SQLSRV_ATTR_DIRECT_QUERY' => [
'prettify' => [
$this,
'pdoFriendlyNameBoolean',
],
],
'SQLSRV_ATTR_FETCHES_NUMERIC_TYPE' => [
'prettify' => [
$this,
'pdoFriendlyNameBoolean',
],
],
'ATTR_ORACLE_NULLS' => [
'prettify' => [
$this,
'pdoFriendlyNameBoolean',
],
],
'SQLSRV_ATTR_CLIENT_BUFFER_MAX_KB_SIZE' => [
'prettify' => [
$this,
'pdoFriendlySizeKb',
],
],
];
foreach ($prettify as $key => $spec) {
$result[$key]['pretty'] = call_user_func($spec['prettify'], $result[$key]['value']);
}
$this->attributes = $result;
}