vendor/doctrine/dbal/src/Logging/Driver.php line 34

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace Doctrine\DBAL\Logging;
  4. use Doctrine\DBAL\Driver as DriverInterface;
  5. use Doctrine\DBAL\Driver\Middleware\AbstractDriverMiddleware;
  6. use Psr\Log\LoggerInterface;
  7. use SensitiveParameter;
  8. final class Driver extends AbstractDriverMiddleware
  9. {
  10. private LoggerInterface $logger;
  11. /** @internal This driver can be only instantiated by its middleware. */
  12. public function __construct(DriverInterface $driver, LoggerInterface $logger)
  13. {
  14. parent::__construct($driver);
  15. $this->logger = $logger;
  16. }
  17. /**
  18. * {@inheritDoc}
  19. */
  20. public function connect(
  21. #[SensitiveParameter]
  22. array $params
  23. ) {
  24. $this->logger->info('Connecting with parameters {params}', ['params' => $this->maskPassword($params)]);
  25. return new Connection(
  26. parent::connect($params),
  27. $this->logger,
  28. );
  29. }
  30. /**
  31. * @param array<string,mixed> $params Connection parameters
  32. *
  33. * @return array<string,mixed>
  34. */
  35. private function maskPassword(
  36. #[SensitiveParameter]
  37. array $params
  38. ): array {
  39. if (isset($params['password'])) {
  40. $params['password'] = '<redacted>';
  41. }
  42. if (isset($params['url'])) {
  43. $params['url'] = '<redacted>';
  44. }
  45. return $params;
  46. }
  47. }