LoggedStatementsTrait.php in Drupal 8
File
core/modules/system/tests/modules/database_statement_monitoring_test/src/LoggedStatementsTrait.php
View source
<?php
namespace Drupal\database_statement_monitoring_test;
use Drupal\Core\Database\Query\Condition;
trait LoggedStatementsTrait {
protected $loggedStatements;
public function query($query, array $args = [], $options = []) {
if (is_string($query)) {
$stringified_args = array_map(function ($v) {
return is_array($v) ? implode(',', $v) : $v;
}, $args);
$this->loggedStatements[] = str_replace(array_keys($stringified_args), array_values($stringified_args), $query);
}
return parent::query($query, $args, $options);
}
public function resetLoggedStatements() {
$this->loggedStatements = [];
return $this;
}
public function getDriverClass($class) {
$namespace = (new \ReflectionClass(get_parent_class($this)))
->getNamespaceName();
$driver_class = $namespace . '\\' . $class;
if (class_exists($driver_class)) {
return $driver_class;
}
elseif ($class == 'Condition') {
return Condition::class;
}
return $class;
}
public function getLoggedStatements() {
return $this->loggedStatements;
}
}