1
0
mirror of https://github.com/dg/dibi.git synced 2025-07-31 19:30:30 +02:00

Translator: convert BackedEnum to scalar

also closes (#412)
This commit is contained in:
Miloslav Hůla
2021-12-06 15:45:00 +01:00
committed by David Grudl
parent 7d82ce2ff6
commit 04bb5ede3d
2 changed files with 46 additions and 0 deletions

View File

@@ -326,6 +326,11 @@ XX
}
}
// object-to-scalar procession
if ($value instanceof \BackedEnum && is_scalar($value->value)) {
$value = $value->value;
}
// with modifier procession
if ($modifier) {
if ($value !== null && !is_scalar($value)) { // array is already processed

View File

@@ -0,0 +1,41 @@
<?php
/**
* @phpVersion 8.1
* @dataProvider ../databases.ini
*/
declare(strict_types=1);
use Tester\Assert;
require __DIR__ . '/bootstrap.php';
$conn = new Dibi\Connection($config);
$translator = new Dibi\Translator($conn);
enum EnumInt: int
{
case One = 1;
}
enum EnumString: string
{
case One = 'one';
}
enum PureEnum
{
case One;
}
Assert::equal('1', $translator->formatValue(EnumInt::One, null));
Assert::equal(match ($config['driver']) {
'sqlsrv' => "N'one'",
default => "'one'",
}, $translator->formatValue(EnumString::One, null));
Assert::equal('**Unexpected PureEnum**', $translator->formatValue(PureEnum::One, null));