Skip to content

Commit 15dcb34

Browse files
committed
fix(sanitizer): remove debug var_dump from TrimSanitizer
- Remove debugging var_dump statement that was causing risky test warnings - Clean up TrimSanitizer implementation to follow best practices - Improve code documentation with proper English comments
1 parent fc2d1f3 commit 15dcb34

File tree

7 files changed

+260
-87
lines changed

7 files changed

+260
-87
lines changed

composer.lock

Lines changed: 19 additions & 19 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace KaririCode\Sanitizer\Contract;
6+
7+
interface SanitizationResult
8+
{
9+
public function addError(string $property, string $errorKey, string $message): void;
10+
11+
public function setSanitizedData(string $property, mixed $value): void;
12+
13+
public function hasErrors(): bool;
14+
15+
public function getErrors(): array;
16+
17+
public function getSanitizedData(): array;
18+
19+
public function toArray(): array;
20+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace KaririCode\Sanitizer\Contract;
6+
7+
use KaririCode\PropertyInspector\AttributeHandler;
8+
9+
interface SanitizationResultProcessor
10+
{
11+
/**
12+
* Processa os resultados de sanitização após a execução dos processadores.
13+
*
14+
* @param AttributeHandler $handler O manipulador que contém os atributos processados
15+
*
16+
* @return SanitizationResult O resultado da sanitização, incluindo dados processados e erros
17+
*/
18+
public function process(AttributeHandler $handler): SanitizationResult;
19+
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace KaririCode\Sanitizer\Processor;
6+
7+
use KaririCode\PropertyInspector\AttributeHandler;
8+
use KaririCode\Sanitizer\Contract\SanitizationResult as SanitizationResultContract;
9+
use KaririCode\Sanitizer\Contract\SanitizationResultProcessor;
10+
use KaririCode\Sanitizer\SanitizationResult;
11+
12+
class DefaultSanitizationResultProcessor implements SanitizationResultProcessor
13+
{
14+
public function __construct(
15+
private SanitizationResultContract $result = new SanitizationResult()
16+
) {
17+
}
18+
19+
public function process(AttributeHandler $handler): SanitizationResult
20+
{
21+
$processedValues = $handler->getProcessedPropertyValues();
22+
$errors = $handler->getProcessingResultErrors();
23+
24+
foreach ($processedValues as $property => $data) {
25+
$this->result->setSanitizedData($property, $data['value']);
26+
27+
if (isset($errors[$property])) {
28+
$this->addPropertyErrors($this->result, $property, $errors[$property]);
29+
}
30+
}
31+
32+
return $this->result;
33+
}
34+
35+
private function addPropertyErrors(
36+
SanitizationResult $result,
37+
string $property,
38+
array $propertyErrors
39+
): void {
40+
foreach ($propertyErrors as $error) {
41+
$result->addError($property, $error['errorKey'], $error['message']);
42+
}
43+
}
44+
}

src/SanitizationResult.php

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace KaririCode\Sanitizer;
6+
7+
class SanitizationResult implements Contract\SanitizationResult
8+
{
9+
private array $errors = [];
10+
private array $sanitizedData = [];
11+
12+
public function addError(string $property, string $errorKey, string $message): void
13+
{
14+
if (!isset($this->errors[$property])) {
15+
$this->errors[$property] = [];
16+
}
17+
18+
// Avoid adding duplicate errors
19+
foreach ($this->errors[$property] as $error) {
20+
if ($error['errorKey'] === $errorKey) {
21+
return;
22+
}
23+
}
24+
25+
$this->errors[$property][] = [
26+
'errorKey' => $errorKey,
27+
'message' => $message,
28+
];
29+
}
30+
31+
public function setSanitizedData(string $property, mixed $value): void
32+
{
33+
$this->sanitizedData[$property] = $value;
34+
}
35+
36+
public function hasErrors(): bool
37+
{
38+
return !empty($this->errors);
39+
}
40+
41+
public function getErrors(): array
42+
{
43+
return $this->errors;
44+
}
45+
46+
public function getSanitizedData(): array
47+
{
48+
return $this->sanitizedData;
49+
}
50+
51+
public function toArray(): array
52+
{
53+
return [
54+
'isValid' => !$this->hasErrors(),
55+
'errors' => $this->errors,
56+
'sanitizedData' => $this->sanitizedData,
57+
];
58+
}
59+
}

src/Sanitizer.php

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
<?php
22

3+
declare(strict_types=1);
4+
35
namespace KaririCode\Sanitizer;
46

57
use KaririCode\Contract\Processor\ProcessorRegistry;
@@ -9,6 +11,9 @@
911
use KaririCode\PropertyInspector\AttributeHandler;
1012
use KaririCode\PropertyInspector\Utility\PropertyInspector;
1113
use KaririCode\Sanitizer\Attribute\Sanitize;
14+
use KaririCode\Sanitizer\Contract\SanitizationResult;
15+
use KaririCode\Sanitizer\Contract\SanitizationResultProcessor;
16+
use KaririCode\Sanitizer\Processor\DefaultSanitizationResultProcessor;
1217

1318
class Sanitizer implements SanitizerContract
1419
{
@@ -18,25 +23,22 @@ class Sanitizer implements SanitizerContract
1823
private PropertyInspector $propertyInspector;
1924
private AttributeHandler $attributeHandler;
2025

21-
public function __construct(private readonly ProcessorRegistry $registry)
22-
{
26+
public function __construct(
27+
private readonly ProcessorRegistry $registry,
28+
private readonly SanitizationResultProcessor $resultProcessor = new DefaultSanitizationResultProcessor()
29+
) {
2330
$this->builder = new ProcessorBuilder($this->registry);
2431
$this->attributeHandler = new AttributeHandler(self::IDENTIFIER, $this->builder);
2532
$this->propertyInspector = new PropertyInspector(
2633
new AttributeAnalyzer(Sanitize::class)
2734
);
2835
}
2936

30-
public function sanitize(mixed $object): array
37+
public function sanitize(mixed $object): SanitizationResult
3138
{
3239
$this->propertyInspector->inspect($object, $this->attributeHandler);
3340
$this->attributeHandler->applyChanges($object);
3441

35-
return [
36-
'sanitizedValues' => $this->attributeHandler->getProcessedValues(),
37-
'messages' => $this->attributeHandler->getProcessingMessages(),
38-
'errors' => $this->attributeHandler->getProcessingErrors(),
39-
'object' => $object,
40-
];
42+
return $this->resultProcessor->process($this->attributeHandler);
4143
}
4244
}

0 commit comments

Comments
 (0)