2
0

PaperPDO.php 775 B

123456789101112131415161718192021222324252627282930
  1. <?php
  2. namespace PhpDevCommunity\PaperORM\Pdo;
  3. use PhpDevCommunity\PaperORM\Debugger\PDOStatementLogger;
  4. use PhpDevCommunity\PaperORM\Debugger\SqlDebugger;
  5. use Psr\Log\LoggerInterface;
  6. final class PaperPDO extends \PDO
  7. {
  8. private ?SqlDebugger $debug = null;
  9. public function enableSqlDebugger(?LoggerInterface $logger = null) : void
  10. {
  11. if ($this->debug === null) {
  12. $this->debug = new SqlDebugger($logger);
  13. }
  14. $this->setAttribute(\PDO::ATTR_STATEMENT_CLASS, [PDOStatementLogger::class, [$this->debug]]);
  15. }
  16. public function disableSqlDebugger() : void
  17. {
  18. $this->setAttribute(\PDO::ATTR_STATEMENT_CLASS, null);
  19. }
  20. public function getSqlDebugger(): ?SqlDebugger
  21. {
  22. return $this->debug;
  23. }
  24. }