Exemple #1
0
 /**
  * @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);
     }
 }