. */ /** * Doctrine_Db_Event * * @author Konsta Vesterinen * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @package Doctrine * @category Object Relational Mapping * @link www.phpdoctrine.com * @since 1.0 * @version $Revision$ */ class Doctrine_Db_Event { const QUERY = 1; const EXEC = 2; const EXECUTE = 3; const PREPARE = 4; const BEGIN = 5; const COMMIT = 6; const ROLLBACK = 7; protected $invoker; protected $query; protected $type; protected $startedMicrotime; protected $endedMicrotime; public function __construct($invoker, $type, $query = null) { $this->invoker = $invoker; $this->type = $type; $this->query = $query; } public function getQuery() { return $this->query; } public function getType() { return $this->type; } public function start() { $this->startedMicrotime = microtime(true); } public function hasEnded() { return ($this->endedMicrotime != null); } public function end() { $this->endedMicrotime = microtime(true); } public function getInvoker() { return $this->invoker; } /** * Get the elapsed time (in microseconds) that the event ran. If the event has * not yet ended, return false. * * @return mixed */ public function getElapsedSecs() { if (is_null($this->endedMicrotime)) { return false; } return ($this->endedMicrotime - $this->startedMicrotime); } }