1
0
mirror of https://github.com/dg/dibi.git synced 2025-08-06 22:26:43 +02:00

Connection: translator is created/destructed in connect/disconnect [Closes #352][Closes #354]

This commit is contained in:
David Grudl
2020-02-14 12:39:17 +01:00
parent 0b0d805040
commit 9f71f39470

View File

@@ -51,7 +51,7 @@ class Connection implements IConnection
* - profiler (array)
* - run (bool) => enable profiler?
* - file => file to log
* - errorsOnly (bool) => log only errors
* - errorsOnly (bool) => log only errors
* - substitutes (array) => map of driver specific substitutes (under development)
* - onConnect (array) => list of SQL queries to execute (by Connection::query()) after connection is established
* @throws Exception
@@ -110,6 +110,7 @@ class Connection implements IConnection
{
if ($this->config['driver'] instanceof Driver) {
$this->driver = $this->config['driver'];
$this->translator = new Translator($this);
return;
} elseif (is_subclass_of($this->config['driver'], Driver::class)) {
@@ -126,6 +127,8 @@ class Connection implements IConnection
$event = $this->onEvent ? new Event($this, Event::CONNECT) : null;
try {
$this->driver = new $class($this->config);
$this->translator = new Translator($this);
if ($event) {
$this->onEvent($event->done());
}
@@ -151,7 +154,7 @@ class Connection implements IConnection
{
if ($this->driver) {
$this->driver->disconnect();
$this->driver = null;
$this->driver = $this->translator = null;
}
}
@@ -252,11 +255,7 @@ class Connection implements IConnection
if (!$this->driver) {
$this->connect();
}
if (!$this->translator) {
$this->translator = new Translator($this);
}
$translator = clone $this->translator;
return $translator->translate($args);
return (clone $this->translator)->translate($args);
}