Skip to content

Commit 21889d4

Browse files
committed
Registrar filtros Twig con instancias para Psalm 5.26
Psalm 5.26 valida los callables array{class-string, string} como estaticos y reportaba InvalidArgument en ReportTwigExtension porque los metodos de los filtros son de instancia. Se pasan instancias reales, sin cambiar el comportamiento en tiempo de ejecucion. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011PSBqECdqU9q5VJBea8gDF
1 parent 5e26950 commit 21889d4

2 files changed

Lines changed: 13 additions & 7 deletions

File tree

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ Los cambios notables de cada lanzamiento serán documentados en este archivo.
55
## Unreleased
66
- CI: tests unitarios separados de los de integración (SUNAT beta ya no bloquea PRs); matrix PHP 7.4–8.4; actions actualizadas.
77
- Corregir parámetros implícitamente nullable (deprecación PHP 8.4).
8+
- Registrar filtros y funciones Twig del reporte con instancias (compatibilidad con Psalm 5.26).
89

910
## 5.0.0 - 2023-05-01
1011
- #206 Agregar xml para nueva Guia de Remisión.

packages/report/src/Report/Extension/ReportTwigExtension.php

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,11 @@
88

99
namespace Greenter\Report\Extension;
1010

11+
use Greenter\Report\Filter\DocumentFilter;
12+
use Greenter\Report\Filter\FormatFilter;
13+
use Greenter\Report\Filter\ImageFilter;
14+
use Greenter\Report\Filter\ResolveFilter;
15+
use Greenter\Report\Render\QrRender;
1116
use Twig\Extension\AbstractExtension;
1217
use Twig\TwigFilter;
1318
use Twig\TwigFunction;
@@ -20,19 +25,19 @@ class ReportTwigExtension extends AbstractExtension
2025
public function getFilters()
2126
{
2227
return [
23-
new TwigFilter('catalog', ['Greenter\Report\Filter\DocumentFilter', 'getValueCatalog']),
24-
new TwigFilter('image_b64', ['Greenter\Report\Filter\ImageFilter', 'toBase64']),
25-
new TwigFilter('n_format', ['Greenter\Report\Filter\FormatFilter', 'number']),
28+
new TwigFilter('catalog', [new DocumentFilter(), 'getValueCatalog']),
29+
new TwigFilter('image_b64', [new ImageFilter(), 'toBase64']),
30+
new TwigFilter('n_format', [new FormatFilter(), 'number']),
2631
];
2732
}
2833

2934
public function getFunctions()
3035
{
3136
return [
32-
new TwigFunction('legend', ['Greenter\Report\Filter\ResolveFilter', 'getValueLegend']),
33-
new TwigFunction('qrCode', ['Greenter\Report\Render\QrRender', 'getImage']),
34-
new TwigFunction('qrCodeDespatch', ['Greenter\Report\Render\QrRender', 'getImageDespatch']),
35-
new TwigFunction('qrUrl', ['Greenter\Report\Render\QrRender', 'getQrUrl']),
37+
new TwigFunction('legend', [new ResolveFilter(), 'getValueLegend']),
38+
new TwigFunction('qrCode', [new QrRender(), 'getImage']),
39+
new TwigFunction('qrCodeDespatch', [new QrRender(), 'getImageDespatch']),
40+
new TwigFunction('qrUrl', [new QrRender(), 'getQrUrl']),
3641
];
3742
}
3843
}

0 commit comments

Comments
 (0)