_query = $query; $this->_queryType = $queryType; // by default, and for backward-compatibility, start the click ticking $this->start(); } /** * Clone handler for the query object. * @return void */ public function __clone() { $this->_boundParams = array(); $this->_endedMicrotime = null; $this->start(); } /** * Starts the elapsed time click ticking. * This can be called subsequent to object creation, * to restart the clock. For instance, this is useful * right before executing a prepared query. * * @return void */ public function start() { $this->_startedMicrotime = microtime(true); } /** * Ends the query and records the time so that the elapsed time can be determined later. * * @return void */ public function end() { $this->_endedMicrotime = microtime(true); } /** * Returns true if and only if the query has ended. * * @return boolean */ public function hasEnded() { return $this->_endedMicrotime !== null; } /** * Get the original SQL text of the query. * * @return string */ public function getQuery() { return $this->_query; } /** * Get the type of this query (one of the Zend_Db_Profiler::* constants) * * @return integer */ public function getQueryType() { return $this->_queryType; } /** * @param string $param * @param mixed $variable * @return void */ public function bindParam($param, $variable) { $this->_boundParams[$param] = $variable; } /** * @param array $param * @return void */ public function bindParams(array $params) { if (array_key_exists(0, $params)) { array_unshift($params, null); unset($params[0]); } foreach ($params as $param => $value) { $this->bindParam($param, $value); } } /** * @return array */ public function getQueryParams() { return $this->_boundParams; } /** * Get the elapsed time (in seconds) that the query ran. * If the query has not yet ended, false is returned. * * @return float|false */ public function getElapsedSecs() { if (null === $this->_endedMicrotime) { return false; } return $this->_endedMicrotime - $this->_startedMicrotime; } /** * Get the time (in seconds) when the profiler started running. * * @return bool|float */ public function getStartedMicrotime() { if(null === $this->_startedMicrotime) { return false; } return $this->_startedMicrotime; } }