mirror of
https://github.com/dg/dibi.git
synced 2025-08-06 06:07:39 +02:00
cs
This commit is contained in:
@@ -62,7 +62,7 @@ class Panel implements Tracy\IBarPanel
|
||||
if ($e instanceof Dibi\Exception && $e->getSql()) {
|
||||
return [
|
||||
'tab' => 'SQL',
|
||||
'panel' => Helpers::dump($e->getSql(), true),
|
||||
'panel' => Helpers::dump($e->getSql(), return: true),
|
||||
];
|
||||
}
|
||||
|
||||
@@ -118,7 +118,7 @@ class Panel implements Tracy\IBarPanel
|
||||
? $this->explain
|
||||
: ($connection->getConfig('driver') === 'oracle' ? 'EXPLAIN PLAN FOR' : 'EXPLAIN');
|
||||
try {
|
||||
$explain = @Helpers::dump($connection->nativeQuery("$cmd $event->sql"), true);
|
||||
$explain = @Helpers::dump($connection->nativeQuery("$cmd $event->sql"), return: true);
|
||||
} catch (Dibi\Exception $e) {
|
||||
}
|
||||
|
||||
@@ -132,7 +132,7 @@ class Panel implements Tracy\IBarPanel
|
||||
$s .= "<br /><a href='#tracy-debug-DibiProfiler-row-$counter' class='tracy-toggle tracy-collapsed' rel='#tracy-debug-DibiProfiler-row-$counter'>explain</a>";
|
||||
}
|
||||
|
||||
$s .= '</td><td class="tracy-DibiProfiler-sql">' . Helpers::dump(strlen($event->sql) > self::$maxLength ? substr($event->sql, 0, self::$maxLength) . '...' : $event->sql, true);
|
||||
$s .= '</td><td class="tracy-DibiProfiler-sql">' . Helpers::dump(strlen($event->sql) > self::$maxLength ? substr($event->sql, 0, self::$maxLength) . '...' : $event->sql, return: true);
|
||||
if ($explain) {
|
||||
$s .= "<div id='tracy-debug-DibiProfiler-row-$counter' class='tracy-collapsed'>{$explain}</div>";
|
||||
}
|
||||
|
@@ -119,7 +119,7 @@ class OdbcDriver implements Dibi\Driver
|
||||
*/
|
||||
public function begin(?string $savepoint = null): void
|
||||
{
|
||||
if (!odbc_autocommit($this->connection, false)) {
|
||||
if (!odbc_autocommit($this->connection)) {
|
||||
throw new Dibi\DriverException(odbc_errormsg($this->connection) . ' ' . odbc_error($this->connection));
|
||||
}
|
||||
}
|
||||
|
@@ -94,22 +94,13 @@ class PdoDriver implements Dibi\Driver
|
||||
|
||||
[$sqlState, $code, $message] = $this->connection->errorInfo();
|
||||
$message = "SQLSTATE[$sqlState]: $message";
|
||||
switch ($this->driverName) {
|
||||
case 'mysql':
|
||||
throw MySqliDriver::createException($message, $code, $sql);
|
||||
|
||||
case 'oci':
|
||||
throw OracleDriver::createException($message, $code, $sql);
|
||||
|
||||
case 'pgsql':
|
||||
throw PostgreDriver::createException($message, $sqlState, $sql);
|
||||
|
||||
case 'sqlite':
|
||||
throw SqliteDriver::createException($message, $code, $sql);
|
||||
|
||||
default:
|
||||
throw new Dibi\DriverException($message, $code, $sql);
|
||||
}
|
||||
throw match ($this->driverName) {
|
||||
'mysql' => MySqliDriver::createException($message, $code, $sql),
|
||||
'oci' => OracleDriver::createException($message, $code, $sql),
|
||||
'pgsql' => PostgreDriver::createException($message, $sqlState, $sql),
|
||||
'sqlite' => SqliteDriver::createException($message, $code, $sql),
|
||||
default => new Dibi\DriverException($message, $code, $sql),
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
|
@@ -285,14 +285,11 @@ class Fluent implements IDataSource
|
||||
public function execute(?string $return = null): Result|int|null
|
||||
{
|
||||
$res = $this->query($this->_export());
|
||||
switch ($return) {
|
||||
case \dibi::IDENTIFIER:
|
||||
return $this->connection->getInsertId();
|
||||
case \dibi::AFFECTED_ROWS:
|
||||
return $this->connection->getAffectedRows();
|
||||
default:
|
||||
return $res;
|
||||
}
|
||||
return match ($return) {
|
||||
\dibi::IDENTIFIER => $this->connection->getInsertId(),
|
||||
\dibi::AFFECTED_ROWS => $this->connection->getAffectedRows(),
|
||||
default => $res,
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
|
@@ -46,7 +46,7 @@ abstract class HashMapBase
|
||||
*/
|
||||
final class HashMap extends HashMapBase
|
||||
{
|
||||
public function __set(string $nm, $val)
|
||||
public function __set(string $nm, mixed $val): void
|
||||
{
|
||||
if ($nm === '') {
|
||||
$nm = "\xFF";
|
||||
@@ -56,7 +56,7 @@ final class HashMap extends HashMapBase
|
||||
}
|
||||
|
||||
|
||||
public function __get(string $nm)
|
||||
public function __get(string $nm): mixed
|
||||
{
|
||||
if ($nm === '') {
|
||||
$nm = "\xFF";
|
||||
|
@@ -48,10 +48,11 @@ class Row implements \ArrayAccess, \IteratorAggregate, \Countable
|
||||
}
|
||||
|
||||
|
||||
public function __get(string $key)
|
||||
public function __get(string $key): mixed
|
||||
{
|
||||
$hint = Helpers::getSuggestion(array_keys((array) $this), $key);
|
||||
trigger_error("Attempt to read missing column '$key'" . ($hint ? ", did you mean '$hint'?" : '.'), E_USER_NOTICE);
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
|
@@ -24,13 +24,17 @@ Assert::true(isset($row['title']));
|
||||
|
||||
|
||||
// missing
|
||||
Assert::error(function () use ($row) {
|
||||
$x = $row->missing;
|
||||
}, E_USER_NOTICE, "Attempt to read missing column 'missing'.");
|
||||
Assert::error(
|
||||
fn() => $x = $row->missing,
|
||||
E_USER_NOTICE,
|
||||
"Attempt to read missing column 'missing'.",
|
||||
);
|
||||
|
||||
Assert::error(function () use ($row) {
|
||||
$x = $row['missing'];
|
||||
}, E_USER_NOTICE, "Attempt to read missing column 'missing'.");
|
||||
Assert::error(
|
||||
fn() => $x = $row['missing'],
|
||||
E_USER_NOTICE,
|
||||
"Attempt to read missing column 'missing'.",
|
||||
);
|
||||
|
||||
Assert::false(isset($row->missing));
|
||||
Assert::false(isset($row['missing']));
|
||||
@@ -41,13 +45,17 @@ Assert::same(123, $row['missing'] ?? 123);
|
||||
|
||||
|
||||
// suggestions
|
||||
Assert::error(function () use ($row) {
|
||||
$x = $row->tilte;
|
||||
}, E_USER_NOTICE, "Attempt to read missing column 'tilte', did you mean 'title'?");
|
||||
Assert::error(
|
||||
fn() => $x = $row->tilte,
|
||||
E_USER_NOTICE,
|
||||
"Attempt to read missing column 'tilte', did you mean 'title'?",
|
||||
);
|
||||
|
||||
Assert::error(function () use ($row) {
|
||||
$x = $row['tilte'];
|
||||
}, E_USER_NOTICE, "Attempt to read missing column 'tilte', did you mean 'title'?");
|
||||
Assert::error(
|
||||
fn() => $x = $row['tilte'],
|
||||
E_USER_NOTICE,
|
||||
"Attempt to read missing column 'tilte', did you mean 'title'?",
|
||||
);
|
||||
|
||||
|
||||
// to array
|
||||
|
@@ -20,7 +20,7 @@ date_default_timezone_set('Europe/Prague');
|
||||
try {
|
||||
$config = Tester\Environment::loadData();
|
||||
} catch (Throwable $e) {
|
||||
$config = parse_ini_file(__DIR__ . '/../databases.ini', true);
|
||||
$config = parse_ini_file(__DIR__ . '/../databases.ini', process_sections: true);
|
||||
$config = reset($config);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user