vendor/symfony/doctrine-bridge/Middleware/Debug/Statement.php line 65

Open in your IDE?
  1. <?php
  2. /*
  3.  * This file is part of the Symfony package.
  4.  *
  5.  * (c) Fabien Potencier <fabien@symfony.com>
  6.  *
  7.  * For the full copyright and license information, please view the LICENSE
  8.  * file that was distributed with this source code.
  9.  */
  10. namespace Symfony\Bridge\Doctrine\Middleware\Debug;
  11. use Doctrine\DBAL\Driver\Middleware\AbstractStatementMiddleware;
  12. use Doctrine\DBAL\Driver\Result as ResultInterface;
  13. use Doctrine\DBAL\Driver\Statement as StatementInterface;
  14. use Doctrine\DBAL\ParameterType;
  15. /**
  16.  * @author Laurent VOULLEMIER <laurent.voullemier@gmail.com>
  17.  *
  18.  * @internal
  19.  */
  20. final class Statement extends AbstractStatementMiddleware
  21. {
  22.     private Query $query;
  23.     public function __construct(
  24.         StatementInterface $statement,
  25.         private DebugDataHolder $debugDataHolder,
  26.         private string $connectionName,
  27.         string $sql,
  28.     ) {
  29.         parent::__construct($statement);
  30.         $this->query = new Query($sql);
  31.     }
  32.     public function bindParam($param, &$variable$type ParameterType::STRING$length null): bool
  33.     {
  34.         $this->query->setParam($param$variable$type);
  35.         return parent::bindParam($param$variable$type, ...\array_slice(\func_get_args(), 3));
  36.     }
  37.     public function bindValue($param$value$type ParameterType::STRING): bool
  38.     {
  39.         $this->query->setValue($param$value$type);
  40.         return parent::bindValue($param$value$type);
  41.     }
  42.     public function execute($params null): ResultInterface
  43.     {
  44.         if (null !== $params) {
  45.             $this->query->setValues($params);
  46.         }
  47.         // clone to prevent variables by reference to change
  48.         $this->debugDataHolder->addQuery($this->connectionName$query = clone $this->query);
  49.         $query->start();
  50.         try {
  51.             $result parent::execute($params);
  52.         } finally {
  53.             $query->stop();
  54.         }
  55.         return $result;
  56.     }
  57. }