/** * Creates a new database connection * * @param PDO $connection * @param string $schema - The name of the database schema you will be testing against. */ public function __construct(PDO $connection, $schema) { $this->connection = $connection; $this->metaData = PHPUnit_Extensions_Database_DB_MetaData::createMetaData($connection, $schema); $this->schema = $schema; $connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); }
/** * Creates a meta data object based on the driver of given connection and * $schema name. * * @param PDO|resource $connection * @param string $schema * @return PHPUnit_Extensions_Database_DB_IMetaData */ public static function createMetaData($connection, $schema) { // for PDO use PHPUnit_Extensions_Database_DB_IMetaData if ($connection instanceof PDO) { $driverName = $connection->getAttribute(PDO::ATTR_DRIVER_NAME); // register overloaded classes maps for pdo if (isset(self::$metaDataClassMap[$driverName])) { $className = self::$metaDataClassMap[$driverName]; PHPUnit_Extensions_Database_DB_MetaData::registerClassWithDriver($className, $driverName); } return PHPUnit_Extensions_Database_DB_MetaData::createMetaData($connection, $connection); } $driverName = 'oracle'; if (isset(self::$metaDataClassMap[$driverName])) { $className = self::$metaDataClassMap[$driverName]; if ($className instanceof ReflectionClass) { return $className->newInstance($connection, $schema); } else { return self::registerClassWithDriver($className, $driverName)->newInstance($connection, $schema); } } else { throw new Exception("Could not find a meta data driver for {$driverName} driver."); } }