1
0
mirror of https://github.com/dg/dibi.git synced 2025-08-31 17:51:43 +02:00

Compare commits

..

12 Commits

Author SHA1 Message Date
David Grudl
cb0cf4ba2f Released version 4.2.8 2023-08-09 16:15:07 +02:00
David Grudl
8e7df8374b drivers: removed auto-free feature 2023-08-09 16:15:07 +02:00
Marek Bartoš
848ac76fed Fluent: improved phpDoc 2023-08-09 16:15:07 +02:00
David Grudl
a0f2ca2fca typo 2023-08-09 16:15:04 +02:00
David Grudl
cf14987b42 cs 2023-08-05 19:56:38 +02:00
David Grudl
01c7ab63e3 tested in PHP 8.3 2023-08-05 19:50:57 +02:00
David Grudl
520119740d updated .gitattributes 2022-12-21 02:06:10 +01:00
Marek Štípek
7fa05f381b Event: detecting source without filesystem check (#428)
Co-authored-by: Marek Stipek <stipek@shoptet.cz>
2022-11-18 04:40:51 +01:00
David Grudl
3a962de553 cs 2022-10-13 03:58:51 +02:00
David Grudl
96e370b8fe updated github workflow 2022-10-13 03:51:11 +02:00
Jirka Hrazdil
ec0455ae00 Panel: typo (#421) 2022-09-06 04:32:10 +02:00
David Grudl
b61737311e support for PHP 8.2 2022-09-06 04:26:58 +02:00
24 changed files with 54 additions and 131 deletions

4
.gitattributes vendored
View File

@@ -1,8 +1,8 @@
.gitattributes export-ignore
.gitignore export-ignore
.github export-ignore
.travis.yml export-ignore
ecs.php export-ignore
appveyor.yml export-ignore
ncs.* export-ignore
phpstan.neon export-ignore
tests/ export-ignore

View File

@@ -7,7 +7,7 @@ jobs:
name: Nette Code Checker
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
- uses: shivammathur/setup-php@v2
with:
php-version: 8.0
@@ -21,11 +21,11 @@ jobs:
name: Nette Coding Standard
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
- uses: shivammathur/setup-php@v2
with:
php-version: 8.0
coverage: none
- run: composer create-project nette/coding-standard temp/coding-standard ^3 --no-progress --ignore-platform-reqs
- run: composer create-project nette/coding-standard temp/coding-standard ^3 --no-progress
- run: php temp/coding-standard/ecs check

View File

@@ -10,7 +10,7 @@ jobs:
name: PHPStan
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
- uses: shivammathur/setup-php@v2
with:
php-version: 8.0

View File

@@ -11,7 +11,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
php: ['7.2', '7.3', '7.4', '8.0', '8.1']
php: ['7.2', '7.3', '7.4', '8.0', '8.1', '8.2', '8.3']
fail-fast: false
@@ -89,7 +89,7 @@ jobs:
--health-retries 5
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
- uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php }}
@@ -106,7 +106,7 @@ jobs:
- run: composer install --no-progress --prefer-dist
- run: vendor/bin/tester -p phpdbg tests -s -C --coverage ./coverage.xml --coverage-src ./src
- if: failure()
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v3
with:
name: output
path: tests/**/output

View File

@@ -34,7 +34,7 @@ Install Dibi via Composer:
composer require dibi/dibi
```
The Dibi 4.2 requires PHP version 7.2 and supports PHP up to 8.1.
The Dibi 4.2 requires PHP version 7.2 and supports PHP up to 8.3.
Usage
@@ -341,7 +341,7 @@ $database->query('INSERT INTO users', [
There are three methods for dealing with transactions:
```php
$database->beginTransaction();
$database->begin();
$database->commit();

View File

@@ -159,7 +159,7 @@ class Panel implements Tracy\IBarPanel
return '<style> #tracy-debug td.tracy-DibiProfiler-sql { background: white !important }
#tracy-debug .tracy-DibiProfiler-source { color: #999 !important }
#tracy-debug tracy-DibiProfiler tr table { margin: 8px 0; max-height: 150px; overflow:auto } </style>
<h1>Queries:\u{a0}' . count($this->events)
<h1>Queries:' . "\u{a0}" . count($this->events)
. ($totalTime === null ? '' : ", time:\u{a0}" . number_format($totalTime * 1000, 1, '.', "\u{202f}") . "\u{202f}ms") . ', '
. htmlspecialchars($this->getConnectionName($singleConnection)) . '</h1>
<div class="tracy-inner tracy-DibiProfiler">

View File

@@ -23,9 +23,6 @@ class FirebirdResult implements Dibi\ResultDriver
/** @var resource */
private $resultSet;
/** @var bool */
private $autoFree = true;
/**
* @param resource $resultSet
@@ -36,17 +33,6 @@ class FirebirdResult implements Dibi\ResultDriver
}
/**
* Automatically frees the resources allocated for this result set.
*/
public function __destruct()
{
if ($this->autoFree && $this->getResultResource()) {
$this->free();
}
}
/**
* Returns the number of rows in a result set.
*/
@@ -105,7 +91,6 @@ class FirebirdResult implements Dibi\ResultDriver
*/
public function getResultResource()
{
$this->autoFree = false;
return is_resource($this->resultSet) ? $this->resultSet : null;
}

View File

@@ -22,9 +22,6 @@ class MySqliResult implements Dibi\ResultDriver
/** @var \mysqli_result */
private $resultSet;
/** @var bool */
private $autoFree = true;
/** @var bool Is buffered (seekable and countable)? */
private $buffered;
@@ -36,17 +33,6 @@ class MySqliResult implements Dibi\ResultDriver
}
/**
* Automatically frees the resources allocated for this result set.
*/
public function __destruct()
{
if ($this->autoFree && $this->getResultResource()) {
@$this->free();
}
}
/**
* Returns the number of rows in a result set.
*/
@@ -136,7 +122,6 @@ class MySqliResult implements Dibi\ResultDriver
*/
public function getResultResource(): \mysqli_result
{
$this->autoFree = false;
return $this->resultSet;
}

View File

@@ -22,9 +22,6 @@ class OdbcResult implements Dibi\ResultDriver
/** @var resource */
private $resultSet;
/** @var bool */
private $autoFree = true;
/** @var int Cursor */
private $row = 0;
@@ -38,17 +35,6 @@ class OdbcResult implements Dibi\ResultDriver
}
/**
* Automatically frees the resources allocated for this result set.
*/
public function __destruct()
{
if ($this->autoFree && $this->getResultResource()) {
$this->free();
}
}
/**
* Returns the number of rows in a result set.
*/
@@ -129,7 +115,6 @@ class OdbcResult implements Dibi\ResultDriver
*/
public function getResultResource()
{
$this->autoFree = false;
return is_resource($this->resultSet) ? $this->resultSet : null;
}

View File

@@ -22,9 +22,6 @@ class OracleResult implements Dibi\ResultDriver
/** @var resource */
private $resultSet;
/** @var bool */
private $autoFree = true;
/**
* @param resource $resultSet
@@ -35,17 +32,6 @@ class OracleResult implements Dibi\ResultDriver
}
/**
* Automatically frees the resources allocated for this result set.
*/
public function __destruct()
{
if ($this->autoFree && $this->getResultResource()) {
$this->free();
}
}
/**
* Returns the number of rows in a result set.
*/
@@ -111,7 +97,6 @@ class OracleResult implements Dibi\ResultDriver
*/
public function getResultResource()
{
$this->autoFree = false;
return is_resource($this->resultSet) ? $this->resultSet : null;
}

View File

@@ -24,9 +24,6 @@ class PostgreResult implements Dibi\ResultDriver
/** @var resource|PgSql\Result */
private $resultSet;
/** @var bool */
private $autoFree = true;
/**
* @param resource|PgSql\Result $resultSet
@@ -37,17 +34,6 @@ class PostgreResult implements Dibi\ResultDriver
}
/**
* Automatically frees the resources allocated for this result set.
*/
public function __destruct()
{
if ($this->autoFree && $this->getResultResource()) {
$this->free();
}
}
/**
* Returns the number of rows in a result set.
*/
@@ -114,7 +100,6 @@ class PostgreResult implements Dibi\ResultDriver
*/
public function getResultResource()
{
$this->autoFree = false;
return is_resource($this->resultSet) || $this->resultSet instanceof PgSql\Result
? $this->resultSet
: null;

View File

@@ -292,7 +292,8 @@ class SqliteDriver implements Dibi\Driver
callable $rowCallback,
callable $agrCallback,
int $numArgs = -1
): void {
): void
{
$this->connection->createAggregate($name, $rowCallback, $agrCallback, $numArgs);
}
}

View File

@@ -23,9 +23,6 @@ class SqliteResult implements Dibi\ResultDriver
/** @var \SQLite3Result */
private $resultSet;
/** @var bool */
private $autoFree = true;
public function __construct(\SQLite3Result $resultSet)
{
@@ -33,17 +30,6 @@ class SqliteResult implements Dibi\ResultDriver
}
/**
* Automatically frees the resources allocated for this result set.
*/
public function __destruct()
{
if ($this->autoFree && $this->getResultResource()) {
@$this->free();
}
}
/**
* Returns the number of rows in a result set.
* @throws Dibi\NotSupportedException
@@ -109,7 +95,6 @@ class SqliteResult implements Dibi\ResultDriver
*/
public function getResultResource(): \SQLite3Result
{
$this->autoFree = false;
return $this->resultSet;
}

View File

@@ -22,9 +22,6 @@ class SqlsrvResult implements Dibi\ResultDriver
/** @var resource */
private $resultSet;
/** @var bool */
private $autoFree = true;
/**
* @param resource $resultSet
@@ -35,17 +32,6 @@ class SqlsrvResult implements Dibi\ResultDriver
}
/**
* Automatically frees the resources allocated for this result set.
*/
public function __destruct()
{
if ($this->autoFree && $this->getResultResource()) {
$this->free();
}
}
/**
* Returns the number of rows in a result set.
*/
@@ -107,7 +93,6 @@ class SqlsrvResult implements Dibi\ResultDriver
*/
public function getResultResource()
{
$this->autoFree = false;
return is_resource($this->resultSet) ? $this->resultSet : null;
}

View File

@@ -70,7 +70,11 @@ class Event
$dibiDir = dirname((new \ReflectionClass('dibi'))->getFileName()) . DIRECTORY_SEPARATOR;
foreach (debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS) as $row) {
if (isset($row['file']) && is_file($row['file']) && strpos($row['file'], $dibiDir) !== 0) {
if (
isset($row['file'])
&& preg_match('~\.(php.?|phtml)$~', $row['file'])
&& substr($row['file'], 0, strlen($dibiDir)) !== $dibiDir
) {
$this->source = [$row['file'], (int) $row['line']];
break;
}

View File

@@ -27,6 +27,8 @@ namespace Dibi;
* @method Fluent innerJoin(...$table)
* @method Fluent rightJoin(...$table)
* @method Fluent outerJoin(...$table)
* @method Fluent union(Fluent $fluent)
* @method Fluent unionAll(Fluent $fluent)
* @method Fluent as(...$field)
* @method Fluent on(...$cond)
* @method Fluent and(...$cond)

View File

@@ -14,6 +14,7 @@ namespace Dibi;
* Lazy cached storage.
* @internal
*/
#[\AllowDynamicProperties]
abstract class HashMapBase
{
/** @var callable */

View File

@@ -44,22 +44,22 @@ class ResultIterator implements \Iterator, \Countable
}
#[\ReturnTypeWillChange]
/**
* Returns the key of the current element.
* @return mixed
*/
#[\ReturnTypeWillChange]
public function key()
{
return $this->pointer;
}
#[\ReturnTypeWillChange]
/**
* Returns the current element.
* @return mixed
*/
#[\ReturnTypeWillChange]
public function current()
{
return $this->row;

View File

@@ -13,6 +13,7 @@ namespace Dibi;
/**
* Result set single row.
*/
#[\AllowDynamicProperties]
class Row implements \ArrayAccess, \IteratorAggregate, \Countable
{
public function __construct(array $arr)

View File

@@ -109,7 +109,7 @@ final class Translator
(\?) ## 11) placeholder
)/xs
XX
,
,
[$this, 'cb'],
substr($arg, $toSkip)
);
@@ -448,7 +448,7 @@ XX
:(\S*?:)([a-zA-Z0-9._]?)
)/sx
XX
,
,
[$this, 'cb'],
substr($value, $toSkip)
);

View File

@@ -44,8 +44,7 @@ class dibi
IDENTIFIER = 'n';
/** version */
public const
VERSION = '4.2.6';
public const VERSION = '4.2.8';
/** sorting order */
public const

View File

@@ -0,0 +1,21 @@
<?php
declare(strict_types=1);
use Tester\Assert;
require __DIR__ . '/bootstrap.php';
$conn = new Dibi\Connection($config);
$event = new Dibi\Event($conn, Dibi\Event::CONNECT);
Assert::same([__FILE__, __LINE__ - 1], $event->source);
eval('$event = new Dibi\Event($conn, Dibi\Event::CONNECT);');
Assert::same([__FILE__, __LINE__ - 1], $event->source);
array_map(function () use ($conn) {
$event = new Dibi\Event($conn, Dibi\Event::CONNECT);
Assert::same([__FILE__, __LINE__ - 1], $event->source);
}, [null]);

View File

@@ -82,10 +82,9 @@ $tests = function ($conn) {
$conn->translate('SELECT 1 %lmt', -10)
);
Assert::exception(
$conn->translate('SELECT 1 %ofs %lmt', 10, 10),
Dibi\NotSupportedException::class
);
Assert::exception(function () {
$conn->translate('SELECT 1 %ofs %lmt', 10, 10);
}, Dibi\NotSupportedException::class);
}
};

View File

@@ -51,7 +51,7 @@ function test(string $title, Closure $function): void
/** Replaces [] with driver-specific quotes */
function reformat($s)
{
global $config;
$config = $GLOBALS['config'];
if (is_array($s)) {
if (isset($s[$config['system']])) {
return $s[$config['system']];
@@ -72,7 +72,7 @@ function reformat($s)
function num($n)
{
global $config;
$config = $GLOBALS['config'];
if (substr($config['dsn'] ?? '', 0, 5) === 'odbc:') {
$n = is_float($n) ? "$n.0" : (string) $n;
}