1
0
mirror of synced 2025-02-07 15:59:27 +03:00

new events onConnect and onPreConnect

This commit is contained in:
zYne 2007-01-16 19:16:04 +00:00
parent 3c0192dbfe
commit 88bf7c1731
5 changed files with 27 additions and 2 deletions

View File

@ -199,6 +199,10 @@ class Doctrine_Db implements Countable, IteratorAggregate, Doctrine_Adapter_Inte
if ($this->isConnected) if ($this->isConnected)
return false; return false;
$event = new Doctrine_Db_Event($this, Doctrine_Db_Event::CONNECT);
$this->listener->onPreConnect($event);
$this->dbh = new PDO($this->options['dsn'], $this->options['username'], $this->options['password']); $this->dbh = new PDO($this->options['dsn'], $this->options['username'], $this->options['password']);
$this->dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $this->dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$this->dbh->setAttribute(PDO::ATTR_STATEMENT_CLASS, array('Doctrine_Db_Statement', array($this))); $this->dbh->setAttribute(PDO::ATTR_STATEMENT_CLASS, array('Doctrine_Db_Statement', array($this)));
@ -212,6 +216,8 @@ class Doctrine_Db implements Countable, IteratorAggregate, Doctrine_Adapter_Inte
} }
$this->isConnected = true; $this->isConnected = true;
$this->listener->onConnect($event);
return true; return true;
} }

View File

@ -38,6 +38,7 @@ class Doctrine_Db_Event
const BEGIN = 5; const BEGIN = 5;
const COMMIT = 6; const COMMIT = 6;
const ROLLBACK = 7; const ROLLBACK = 7;
const CONNECT = 8;
protected $invoker; protected $invoker;
protected $query; protected $query;
@ -54,8 +55,6 @@ class Doctrine_Db_Event
$this->invoker = $invoker; $this->invoker = $invoker;
$this->type = $type; $this->type = $type;
$this->query = $query; $this->query = $query;
} }
public function getQuery() public function getQuery()
{ {

View File

@ -31,6 +31,11 @@
*/ */
class Doctrine_Db_EventListener implements Doctrine_Db_EventListener_Interface class Doctrine_Db_EventListener implements Doctrine_Db_EventListener_Interface
{ {
public function onPreConnect(Doctrine_Db_Event $event)
{ }
public function onConnect(Doctrine_Db_Event $event)
{ }
public function onPreQuery(Doctrine_Db_Event $event) public function onPreQuery(Doctrine_Db_Event $event)
{ } { }
public function onQuery(Doctrine_Db_Event $event) public function onQuery(Doctrine_Db_Event $event)

View File

@ -67,6 +67,18 @@ class Doctrine_Db_EventListener_Chain extends Doctrine_Access implements Doctrin
$this->listeners[$name] = $listener; $this->listeners[$name] = $listener;
} }
public function onPreConnect(Doctrine_Db_Event $event)
{
foreach ($this->listeners as $listener) {
$listener->onPreConnect($event);
}
}
public function onConnect(Doctrine_Db_Event $event)
{
foreach ($this->listeners as $listener) {
$listener->onConnect($event);
}
}
public function onQuery(Doctrine_Db_Event $event) public function onQuery(Doctrine_Db_Event $event)
{ {
foreach ($this->listeners as $listener) { foreach ($this->listeners as $listener) {

View File

@ -26,6 +26,9 @@
* @package Doctrine * @package Doctrine
*/ */
interface Doctrine_Db_EventListener_Interface { interface Doctrine_Db_EventListener_Interface {
public function onPreConnect(Doctrine_Db_Event $event);
public function onConnect(Doctrine_Db_Event $event);
public function onPreQuery(Doctrine_Db_Event $event); public function onPreQuery(Doctrine_Db_Event $event);
public function onQuery(Doctrine_Db_Event $event); public function onQuery(Doctrine_Db_Event $event);