Skip to content

Commit af98022

Browse files
committed
refactor: simplify context processors
1 parent 00ac89b commit af98022

12 files changed

+131
-325
lines changed

src/Internal/ContextProcessor/BuiltInTypeProcessor.php

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

src/Internal/ContextProcessor/ContextProcessorInterface.php

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

src/Internal/ContextProcessor/ContextProcessorManager.php

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

src/Internal/ContextProcessor/DateTimeProcessor.php

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,29 +4,26 @@
44

55
namespace RoadRunner\PsrLogger\Internal\ContextProcessor;
66

7+
use RoadRunner\PsrLogger\Internal\ObjectProcessor;
8+
79
/**
810
* Processor for DateTime objects.
911
*
1012
* Converts DateTime and DateTimeImmutable objects to ISO 8601 format
1113
* for consistent structured logging.
1214
*
13-
* @internal This class is internal to the PSR Logger implementation and should not be used directly.
15+
* @implements ObjectProcessor<\DateTimeInterface>
1416
*
15-
* @implements ContextProcessorInterface<\DateTimeInterface, string>
17+
* @internal
1618
*/
17-
class DateTimeProcessor implements ContextProcessorInterface
19+
final class DateTimeProcessor implements ObjectProcessor
1820
{
19-
public function canProcess(mixed $value): bool
21+
public function canProcess(object $value): bool
2022
{
2123
return $value instanceof \DateTimeInterface;
2224
}
2325

24-
/**
25-
* @param \DateTimeInterface $value
26-
* @param callable(mixed): mixed $recursiveProcessor
27-
* @return string
28-
*/
29-
public function process(mixed $value, callable $recursiveProcessor): mixed
26+
public function process(object $value, callable $processor): mixed
3027
{
3128
return $value->format(\DateTimeInterface::ATOM);
3229
}

src/Internal/ContextProcessor/FallbackProcessor.php

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,30 +4,33 @@
44

55
namespace RoadRunner\PsrLogger\Internal\ContextProcessor;
66

7+
use RoadRunner\PsrLogger\Internal\ObjectProcessor;
8+
79
/**
8-
* Fallback processor for unknown types.
9-
*
10-
* Returns the type name for any value that couldn't be processed
11-
* by more specific processors.
10+
* Fallback processor for unknown objects.
1211
*
13-
* @internal This class is internal to the PSR Logger implementation and should not be used directly.
12+
* @internal
1413
*
15-
* @implements ContextProcessorInterface<mixed, string>
14+
* @implements ObjectProcessor<object>
1615
*/
17-
class FallbackProcessor implements ContextProcessorInterface
16+
final class FallbackProcessor implements ObjectProcessor
1817
{
19-
public function canProcess(mixed $value): bool
18+
public function canProcess(object $value): bool
2019
{
21-
// This processor can handle anything as a last resort
2220
return true;
2321
}
2422

25-
/**
26-
* @param callable(mixed): mixed $recursiveProcessor
27-
* @return string
28-
*/
29-
public function process(mixed $value, callable $recursiveProcessor): mixed
23+
public function process(object $value, callable $processor): string
3024
{
31-
return \gettype($value);
25+
$result = ['@class' => $value::class] + \get_object_vars($value);
26+
foreach ($result as $k => &$v) {
27+
if ($v === $value) {
28+
unset($result[$k]);
29+
}
30+
31+
$v = $processor($v);
32+
}
33+
34+
return $result;
3235
}
3336
}

src/Internal/ContextProcessor/ObjectProcessor.php

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

src/Internal/ContextProcessor/ResourceProcessor.php

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

src/Internal/ContextProcessor/StringableProcessor.php

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,28 +4,23 @@
44

55
namespace RoadRunner\PsrLogger\Internal\ContextProcessor;
66

7+
use RoadRunner\PsrLogger\Internal\ObjectProcessor;
8+
79
/**
8-
* Processor for objects implementing the Stringable interface.
9-
*
1010
* Converts Stringable objects to their string representation.
1111
*
12-
* @internal This class is internal to the PSR Logger implementation and should not be used directly.
12+
* @internal
1313
*
14-
* @implements ContextProcessorInterface<\Stringable, string>
14+
* @implements ObjectProcessor<\Stringable>
1515
*/
16-
class StringableProcessor implements ContextProcessorInterface
16+
final class StringableProcessor implements ObjectProcessor
1717
{
18-
public function canProcess(mixed $value): bool
18+
public function canProcess(object $value): bool
1919
{
2020
return $value instanceof \Stringable;
2121
}
2222

23-
/**
24-
* @param \Stringable $value
25-
* @param callable(mixed): mixed $recursiveProcessor
26-
* @return string
27-
*/
28-
public function process(mixed $value, callable $recursiveProcessor): mixed
23+
public function process(object $value, callable $processor): mixed
2924
{
3025
return (string) $value;
3126
}

0 commit comments

Comments
 (0)