Overview

Packages

  • Auth
  • Config
  • Controller
  • Date
  • Db
  • Feed
    • Abstract
    • Writers
  • File
    • Decorator
  • Form
    • Element
  • Image
  • Log
    • Writer
  • Net
    • Exception
    • REST
  • None
  • PHP
  • PHPMailer
  • Session
  • Util
  • Validate
    • Validator
  • Zend
    • Db
      • Adapter
      • Expr
      • Profiler
      • Select
      • Statement
      • Table
    • Loader
      • Autoloader
      • PluginLoader
    • Registry

Classes

  • Zend_Db_Profiler
  • Zend_Db_Profiler_Firebug
  • Zend_Db_Profiler_Query

Exceptions

  • Zend_Db_Profiler_Exception
  • Overview
  • Package
  • Class
  • Tree
  1: <?php
  2: /**
  3:  * Zend Framework
  4:  *
  5:  * LICENSE
  6:  *
  7:  * This source file is subject to the new BSD license that is bundled
  8:  * with this package in the file LICENSE.txt.
  9:  * It is also available through the world-wide-web at this URL:
 10:  * http://framework.zend.com/license/new-bsd
 11:  * If you did not receive a copy of the license and are unable to
 12:  * obtain it through the world-wide-web, please send an email
 13:  * to license@zend.com so we can send you a copy immediately.
 14:  *
 15:  * @category   Zend
 16:  * @package    Zend_Db
 17:  * @subpackage Profiler
 18:  * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
 19:  * @license    http://framework.zend.com/license/new-bsd     New BSD License
 20:  * @version    $Id: Query.php 23382 2010-11-18 22:50:50Z bittarman $
 21:  */
 22: 
 23: 
 24: /**
 25:  * @category   Zend
 26:  * @package    Zend_Db
 27:  * @subpackage Profiler
 28:  * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
 29:  * @license    http://framework.zend.com/license/new-bsd     New BSD License
 30:  */
 31: class Zend_Db_Profiler_Query
 32: {
 33: 
 34:     /**
 35:      * SQL query string or user comment, set by $query argument in constructor.
 36:      *
 37:      * @var string
 38:      */
 39:     protected $_query = '';
 40: 
 41:     /**
 42:      * One of the Zend_Db_Profiler constants for query type, set by $queryType argument in constructor.
 43:      *
 44:      * @var integer
 45:      */
 46:     protected $_queryType = 0;
 47: 
 48:     /**
 49:      * Unix timestamp with microseconds when instantiated.
 50:      *
 51:      * @var float
 52:      */
 53:     protected $_startedMicrotime = null;
 54: 
 55:     /**
 56:      * Unix timestamp with microseconds when self::queryEnd() was called.
 57:      *
 58:      * @var integer
 59:      */
 60:     protected $_endedMicrotime = null;
 61: 
 62:     /**
 63:      * @var array
 64:      */
 65:     protected $_boundParams = array();
 66: 
 67:     /**
 68:      * @var array
 69:      */
 70: 
 71:     /**
 72:      * Class constructor.  A query is about to be started, save the query text ($query) and its
 73:      * type (one of the Zend_Db_Profiler::* constants).
 74:      *
 75:      * @param  string  $query
 76:      * @param  integer $queryType
 77:      * @return void
 78:      */
 79:     public function __construct($query, $queryType)
 80:     {
 81:         $this->_query = $query;
 82:         $this->_queryType = $queryType;
 83:         // by default, and for backward-compatibility, start the click ticking
 84:         $this->start();
 85:     }
 86: 
 87:     /**
 88:      * Clone handler for the query object.
 89:      * @return void
 90:      */
 91:     public function __clone()
 92:     {
 93:         $this->_boundParams = array();
 94:         $this->_endedMicrotime = null;
 95:         $this->start();
 96:     }
 97: 
 98:     /**
 99:      * Starts the elapsed time click ticking.
100:      * This can be called subsequent to object creation,
101:      * to restart the clock.  For instance, this is useful
102:      * right before executing a prepared query.
103:      *
104:      * @return void
105:      */
106:     public function start()
107:     {
108:         $this->_startedMicrotime = microtime(true);
109:     }
110: 
111:     /**
112:      * Ends the query and records the time so that the elapsed time can be determined later.
113:      *
114:      * @return void
115:      */
116:     public function end()
117:     {
118:         $this->_endedMicrotime = microtime(true);
119:     }
120: 
121:     /**
122:      * Returns true if and only if the query has ended.
123:      *
124:      * @return boolean
125:      */
126:     public function hasEnded()
127:     {
128:         return $this->_endedMicrotime !== null;
129:     }
130: 
131:     /**
132:      * Get the original SQL text of the query.
133:      *
134:      * @return string
135:      */
136:     public function getQuery()
137:     {
138:         return $this->_query;
139:     }
140: 
141:     /**
142:      * Get the type of this query (one of the Zend_Db_Profiler::* constants)
143:      *
144:      * @return integer
145:      */
146:     public function getQueryType()
147:     {
148:         return $this->_queryType;
149:     }
150: 
151:     /**
152:      * @param string $param
153:      * @param mixed $variable
154:      * @return void
155:      */
156:     public function bindParam($param, $variable)
157:     {
158:         $this->_boundParams[$param] = $variable;
159:     }
160: 
161:     /**
162:      * @param array $param
163:      * @return void
164:      */
165:     public function bindParams(array $params)
166:     {
167:         if (array_key_exists(0, $params)) {
168:             array_unshift($params, null);
169:             unset($params[0]);
170:         }
171:         foreach ($params as $param => $value) {
172:             $this->bindParam($param, $value);
173:         }
174:     }
175: 
176:     /**
177:      * @return array
178:      */
179:     public function getQueryParams()
180:     {
181:         return $this->_boundParams;
182:     }
183: 
184:     /**
185:      * Get the elapsed time (in seconds) that the query ran.
186:      * If the query has not yet ended, false is returned.
187:      *
188:      * @return float|false
189:      */
190:     public function getElapsedSecs()
191:     {
192:         if (null === $this->_endedMicrotime) {
193:             return false;
194:         }
195: 
196:         return $this->_endedMicrotime - $this->_startedMicrotime;
197:     }
198: 
199:     /**
200:      * Get the time (in seconds) when the profiler started running.
201:      *
202:      * @return bool|float
203:      */
204:     public function getStartedMicrotime()
205:     {
206:         if(null === $this->_startedMicrotime) {
207:             return false;
208:         }
209: 
210:         return $this->_startedMicrotime;
211:     }
212: }
213: 
214: 
Pry Framework API documentation generated by ApiGen 2.6.1