/** * @param Profiler\ProfilerInterface $profiler * @return Pdo */ public function setProfiler(Profiler\ProfilerInterface $profiler) { $this->profiler = $profiler; if ($this->connection instanceof Profiler\ProfilerAwareInterface) { $this->connection->setProfiler($profiler); } if ($this->statementPrototype instanceof Profiler\ProfilerAwareInterface) { $this->statementPrototype->setProfiler($profiler); } return $this; }
public function injectProfilingStatementPrototype(array $options = array()) { $profiler = $this->getProfiler(); if (!$profiler instanceof Profiler) { throw new \InvalidArgumentException('No profiler attached!'); } $driver = $this->getDriver(); if (method_exists($driver, 'registerStatementPrototype')) { $driverName = get_class($driver); switch ($driverName) { case 'Zend\\Db\\Adapter\\Driver\\IbmDb2\\IbmDb2': $statementPrototype = new ZdbDriver\IbmDb2\Statement(); break; case 'Zend\\Db\\Adapter\\Driver\\Mysqli\\Mysqli': $defaults = array('buffer_results' => false); $options = array_intersect_key(array_merge($defaults, $options), $defaults); $statementPrototype = new ZdbDriver\Mysqli\Statement($options['buffer_results']); break; case 'Zend\\Db\\Adapter\\Driver\\Oci8\\Oci8': $statementPrototype = new ZdbDriver\Oci8\Statement(); break; case 'Zend\\Db\\Adapter\\Driver\\Sqlsrv\\Sqlsrv': $statementPrototype = new ZdbDriver\Sqlsrv\Statement(); break; case 'Zend\\Db\\Adapter\\Driver\\Pgsql\\Pgsql': $statementPrototype = new ZdbDriver\Pgsql\Statement(); break; case 'Zend\\Db\\Adapter\\Driver\\Pdo\\Pdo': default: $statementPrototype = new ZdbDriver\Pdo\Statement(); } $statementPrototype->setProfiler($this->getProfiler()); $driver->registerStatementPrototype($statementPrototype); } }