driver = $driver; $this->mode = $mode; $this->case = $case; } /** * {@inheritDoc} */ public function connect(array $params) { $connection = $this->driver->connect($params); $portability = (new OptimizeFlags())( $this->getDatabasePlatform(), $this->mode ); $case = 0; if ($this->case !== 0 && ($portability & Connection::PORTABILITY_FIX_CASE) !== 0) { if ($connection instanceof PDO\Connection) { // make use of c-level support for case handling $portability &= ~Connection::PORTABILITY_FIX_CASE; $connection->getWrappedConnection()->setAttribute(\PDO::ATTR_CASE, $this->case); } else { $case = $this->case === ColumnCase::LOWER ? CASE_LOWER : CASE_UPPER; } } $convertEmptyStringToNull = ($portability & Connection::PORTABILITY_EMPTY_TO_NULL) !== 0; $rightTrimString = ($portability & Connection::PORTABILITY_RTRIM) !== 0; if (! $convertEmptyStringToNull && ! $rightTrimString && $case === 0) { return $connection; } return new Connection( $connection, new Converter($convertEmptyStringToNull, $rightTrimString, $case) ); } /** * {@inheritDoc} */ public function getDatabasePlatform() { return $this->driver->getDatabasePlatform(); } /** * {@inheritDoc} */ public function getSchemaManager(DBALConnection $conn, AbstractPlatform $platform) { return $this->driver->getSchemaManager($conn, $platform); } public function getExceptionConverter(): ExceptionConverter { return $this->driver->getExceptionConverter(); } }