Skip to content

Commit d073908

Browse files
committed
Remove AbstractExpressionEncoder and ExpressionEncoder interface
1 parent 47484aa commit d073908

12 files changed

+41
-54
lines changed

psalm-baseline.xml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -46,13 +46,6 @@
4646
<code><![CDATA[$encoder->encode($value)]]></code>
4747
</MixedReturnStatement>
4848
</file>
49-
<file src="src/Builder/Encoder/AbstractExpressionEncoder.php">
50-
<MixedAssignment>
51-
<code><![CDATA[$val]]></code>
52-
<code><![CDATA[$val]]></code>
53-
<code><![CDATA[$value[$key]]]></code>
54-
</MixedAssignment>
55-
</file>
5649
<file src="src/Builder/Encoder/CombinedFieldQueryEncoder.php">
5750
<MixedAssignment>
5851
<code><![CDATA[$filter]]></code>
@@ -104,6 +97,13 @@
10497
<code><![CDATA[$value]]></code>
10598
</MixedAssignment>
10699
</file>
100+
<file src="src/Builder/Encoder/RecursiveEncode.php">
101+
<MixedAssignment>
102+
<code><![CDATA[$val]]></code>
103+
<code><![CDATA[$val]]></code>
104+
<code><![CDATA[$value[$key]]]></code>
105+
</MixedAssignment>
106+
</file>
107107
<file src="src/Builder/Query.php">
108108
<ArgumentTypeCoercion>
109109
<code><![CDATA[$query]]></code>

src/Builder/BuilderEncoder.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66

77
use MongoDB\Builder\Encoder\CombinedFieldQueryEncoder;
88
use MongoDB\Builder\Encoder\DictionaryEncoder;
9-
use MongoDB\Builder\Encoder\ExpressionEncoder;
109
use MongoDB\Builder\Encoder\FieldPathEncoder;
1110
use MongoDB\Builder\Encoder\OperatorEncoder;
1211
use MongoDB\Builder\Encoder\OutputWindowEncoder;
@@ -30,14 +29,15 @@
3029

3130
use function array_key_exists;
3231
use function is_object;
32+
use function is_string;
3333

3434
/** @template-implements Encoder<stdClass|array|string|int, Pipeline|StageInterface|ExpressionInterface|QueryInterface> */
3535
final class BuilderEncoder implements Encoder
3636
{
3737
/** @template-use EncodeIfSupported<stdClass|array|string|int, Pipeline|StageInterface|ExpressionInterface|QueryInterface> */
3838
use EncodeIfSupported;
3939

40-
/** @var array<class-string, class-string<ExpressionEncoder>> */
40+
/** @var array<class-string, class-string<Encoder>> */
4141
private array $defaultEncoders = [
4242
Pipeline::class => PipelineEncoder::class,
4343
Variable::class => VariableEncoder::class,

src/Builder/Encoder/CombinedFieldQueryEncoder.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
use LogicException;
88
use MongoDB\Builder\Type\CombinedFieldQuery;
99
use MongoDB\Codec\EncodeIfSupported;
10+
use MongoDB\Codec\Encoder;
1011
use MongoDB\Exception\UnsupportedValueException;
1112
use stdClass;
1213

@@ -17,13 +18,14 @@
1718
use function sprintf;
1819

1920
/**
20-
* @template-extends AbstractExpressionEncoder<stdClass, CombinedFieldQuery>
21+
* @template-implements Encoder<stdClass, CombinedFieldQuery>
2122
* @internal
2223
*/
23-
final class CombinedFieldQueryEncoder extends AbstractExpressionEncoder
24+
final class CombinedFieldQueryEncoder implements Encoder
2425
{
2526
/** @template-use EncodeIfSupported<stdClass, CombinedFieldQuery> */
2627
use EncodeIfSupported;
28+
use RecursiveEncode;
2729

2830
public function canEncode(mixed $value): bool
2931
{

src/Builder/Encoder/DictionaryEncoder.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,15 @@
66

77
use MongoDB\Builder\Type\DictionaryInterface;
88
use MongoDB\Codec\EncodeIfSupported;
9+
use MongoDB\Codec\Encoder;
910
use MongoDB\Exception\UnsupportedValueException;
1011
use stdClass;
1112

1213
/**
13-
* @template-extends AbstractExpressionEncoder<string|int|array|stdClass, DictionaryInterface>
14+
* @template-implements Encoder<string|int|array|stdClass, DictionaryInterface>
1415
* @internal
1516
*/
16-
final class DictionaryEncoder extends AbstractExpressionEncoder
17+
final class DictionaryEncoder implements Encoder
1718
{
1819
/** @template-use EncodeIfSupported<string|int|array|stdClass, DictionaryInterface> */
1920
use EncodeIfSupported;

src/Builder/Encoder/ExpressionEncoder.php

Lines changed: 0 additions & 20 deletions
This file was deleted.

src/Builder/Encoder/FieldPathEncoder.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,14 @@
66

77
use MongoDB\Builder\Type\FieldPathInterface;
88
use MongoDB\Codec\EncodeIfSupported;
9+
use MongoDB\Codec\Encoder;
910
use MongoDB\Exception\UnsupportedValueException;
1011

1112
/**
12-
* @template-extends AbstractExpressionEncoder<string, FieldPathInterface>
13+
* @template-implements Encoder<string, FieldPathInterface>
1314
* @internal
1415
*/
15-
final class FieldPathEncoder extends AbstractExpressionEncoder
16+
final class FieldPathEncoder implements Encoder
1617
{
1718
/** @template-use EncodeIfSupported<string, FieldPathInterface> */
1819
use EncodeIfSupported;

src/Builder/Encoder/OperatorEncoder.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
use MongoDB\Builder\Type\OperatorInterface;
1010
use MongoDB\Builder\Type\Optional;
1111
use MongoDB\Codec\EncodeIfSupported;
12+
use MongoDB\Codec\Encoder;
1213
use MongoDB\Exception\UnsupportedValueException;
1314
use stdClass;
1415

@@ -17,13 +18,14 @@
1718
use function sprintf;
1819

1920
/**
20-
* @template-extends AbstractExpressionEncoder<stdClass, OperatorInterface>
21+
* @template-implements Encoder<stdClass, OperatorInterface>
2122
* @internal
2223
*/
23-
final class OperatorEncoder extends AbstractExpressionEncoder
24+
final class OperatorEncoder implements Encoder
2425
{
2526
/** @template-use EncodeIfSupported<stdClass, OperatorInterface> */
2627
use EncodeIfSupported;
28+
use RecursiveEncode;
2729

2830
public function canEncode(mixed $value): bool
2931
{

src/Builder/Encoder/OutputWindowEncoder.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
use MongoDB\Builder\Type\OutputWindow;
1010
use MongoDB\Builder\Type\WindowInterface;
1111
use MongoDB\Codec\EncodeIfSupported;
12+
use MongoDB\Codec\Encoder;
1213
use MongoDB\Exception\UnsupportedValueException;
1314
use stdClass;
1415

@@ -18,13 +19,14 @@
1819
use function sprintf;
1920

2021
/**
21-
* @template-extends AbstractExpressionEncoder<stdClass, OutputWindow>
22+
* @template-implements Encoder<stdClass, OutputWindow>
2223
* @internal
2324
*/
24-
final class OutputWindowEncoder extends AbstractExpressionEncoder
25+
final class OutputWindowEncoder implements Encoder
2526
{
2627
/** @template-use EncodeIfSupported<stdClass, OutputWindow> */
2728
use EncodeIfSupported;
29+
use RecursiveEncode;
2830

2931
public function canEncode(mixed $value): bool
3032
{

src/Builder/Encoder/PipelineEncoder.php

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,18 @@
66

77
use MongoDB\Builder\Pipeline;
88
use MongoDB\Codec\EncodeIfSupported;
9+
use MongoDB\Codec\Encoder;
910
use MongoDB\Exception\UnsupportedValueException;
1011

1112
/**
12-
* @template-extends AbstractExpressionEncoder<list<mixed>, Pipeline>
13+
* @template-implements Encoder<list<mixed>, Pipeline>
1314
* @internal
1415
*/
15-
final class PipelineEncoder extends AbstractExpressionEncoder
16+
final class PipelineEncoder implements Encoder
1617
{
1718
/** @template-use EncodeIfSupported<list<mixed>, Pipeline> */
1819
use EncodeIfSupported;
20+
use RecursiveEncode;
1921

2022
/** @psalm-assert-if-true Pipeline $value */
2123
public function canEncode(mixed $value): bool
@@ -32,7 +34,7 @@ public function encode(mixed $value): array
3234

3335
$encoded = [];
3436
foreach ($value->getIterator() as $stage) {
35-
$encoded[] = $this->encoder->encodeIfSupported($stage);
37+
$encoded[] = $this->recursiveEncode($stage);
3638
}
3739

3840
return $encoded;

src/Builder/Encoder/QueryEncoder.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
use MongoDB\Builder\Type\QueryInterface;
99
use MongoDB\Builder\Type\QueryObject;
1010
use MongoDB\Codec\EncodeIfSupported;
11+
use MongoDB\Codec\Encoder;
1112
use MongoDB\Exception\UnsupportedValueException;
1213
use stdClass;
1314

@@ -16,13 +17,14 @@
1617
use function sprintf;
1718

1819
/**
19-
* @template-extends AbstractExpressionEncoder<stdClass, QueryObject>
20+
* @template-implements Encoder<stdClass, QueryObject>
2021
* @internal
2122
*/
22-
final class QueryEncoder extends AbstractExpressionEncoder
23+
final class QueryEncoder implements Encoder
2324
{
2425
/** @template-use EncodeIfSupported<stdClass, QueryObject> */
2526
use EncodeIfSupported;
27+
use RecursiveEncode;
2628

2729
public function canEncode(mixed $value): bool
2830
{

src/Builder/Encoder/AbstractExpressionEncoder.php renamed to src/Builder/Encoder/RecursiveEncode.php

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,7 @@
1010
use function get_object_vars;
1111
use function is_array;
1212

13-
/**
14-
* @template BSONType of stdClass|array|string|int
15-
* @template NativeType
16-
* @template-implements ExpressionEncoder<BSONType, NativeType>
17-
* @internal
18-
*/
19-
abstract class AbstractExpressionEncoder implements ExpressionEncoder
13+
trait RecursiveEncode
2014
{
2115
final public function __construct(protected readonly BuilderEncoder $encoder)
2216
{
@@ -31,7 +25,7 @@ final public function __construct(protected readonly BuilderEncoder $encoder)
3125
*
3226
* @template T
3327
*/
34-
final protected function recursiveEncode(mixed $value): mixed
28+
private function recursiveEncode(mixed $value): mixed
3529
{
3630
if (is_array($value)) {
3731
foreach ($value as $key => $val) {

src/Builder/Encoder/VariableEncoder.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,14 @@
66

77
use MongoDB\Builder\Expression\Variable;
88
use MongoDB\Codec\EncodeIfSupported;
9+
use MongoDB\Codec\Encoder;
910
use MongoDB\Exception\UnsupportedValueException;
1011

1112
/**
12-
* @template-extends AbstractExpressionEncoder<string, Variable>
13+
* @template-implements Encoder<string, Variable>
1314
* @internal
1415
*/
15-
final class VariableEncoder extends AbstractExpressionEncoder
16+
final class VariableEncoder implements Encoder
1617
{
1718
/** @template-use EncodeIfSupported<string, Variable> */
1819
use EncodeIfSupported;

0 commit comments

Comments
 (0)