private function exportDao($intf, SQLLogger $logger = null) { if (!file_exists('tests/fixtures/exports')) { @mkdir('tests/fixtures/exports', 0777, true); } $config = new Configuration(); $values = ['sqlRootDir' => 'tests/fixtures/sql', 'connectionString' => 'firebird:dbname=tests/fixtures/todo.fdb', 'dialect' => 'firebird', 'watchMode' => 'Always']; foreach ($values as $f => $v) { $config->{$f} = $v; } $context = new DaoBuilderContext($config); $builder = new DaoBuilder(new \ReflectionClass($intf), $context->getDaoClassName($intf)); $builder->prepare(); $c = $builder->export(true); $implClass = basename($builder->getClassName()); $path = "tests/fixtures/exports/{$implClass}.php"; file_put_contents($path, $c); require_once $path; $implClass = $builder->getClassName(); $params = ['pdo' => new \PDO($context->getConfig()->connectionString, 'SYSDBA', 'masterkey'), 'driverClass' => FirebirdDriver::class]; $conn = \Doctrine\DBAL\DriverManager::getConnection($params); $conn->getConfiguration()->setSQLLogger($logger); return new $implClass($conn, $context); }
private function exportDao($intf, SQLLogger $logger = null) { if (!file_exists('tests/fixtures/exports')) { @mkdir('tests/fixtures/exports', 0777, true); } @copy('tests/fixtures/todo.orig.sqlite3', 'tests/fixtures/todo.sqlite3'); $config = new Configuration(); $values = ['sqlRootDir' => 'tests/fixtures/sql', 'connectionString' => 'sqlite://localhost/?path=tests/fixtures/todo.sqlite3', 'watchMode' => 'Always']; foreach ($values as $f => $v) { $config->{$f} = $v; } $context = new DaoBuilderContext($config); $builder = new DaoBuilder(new \ReflectionClass($intf), $context->getDaoClassName($intf)); $builder->prepare(); $c = $builder->export(true); $implClass = basename($builder->getClassName()); $path = "tests/fixtures/exports/{$implClass}.php"; file_put_contents($path, $c); require_once $path; $implClass = $builder->getClassName(); $conn = \Doctrine\DBAL\DriverManager::getConnection(['url' => $context->getConfig()->connectionString]); $conn->getConfiguration()->setSQLLogger($logger); return new $implClass($conn, $context); }
/** * @param string intfName */ public function build($intfName) { $classPath = $this->config->daoClassPath; $className = $this->getDaoClassName($intfName); $path = $this->normalizePath("{$classPath}/{$className}.php"); if (!file_exists(dirname($path))) { mkdir(dirname($path), 0777, true); } $ref = new \ReflectionClass($intfName); if ($this->watcher->outdated($ref->getFileName()) || $this->watcher->sqlOutdated($className::AccessRoute)) { $builder = new DaoBuilder($ref, $className); $builder->setParamCaseSensor(CaseSensor::{$this->config->paramCaseSensor}()); $builder->setReturnCaseSensor(CaseSensor::{$this->config->returnCaseSensor}()); $builder->prepare(); file_put_contents($path, $builder->export(true)); } }