Subversion-Projekte lars-tiefland.laravel_shop

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
148 lars 1
<?php
2
 
3
namespace Spatie\FlareClient\Truncation;
4
 
5
class ReportTrimmer
6
{
7
    protected static int $maxPayloadSize = 524288;
8
 
9
    /** @var array<int, class-string<\Spatie\FlareClient\Truncation\TruncationStrategy>> */
10
    protected array $strategies = [
11
        TrimStringsStrategy::class,
12
        TrimContextItemsStrategy::class,
13
    ];
14
 
15
    /**
16
     * @param array<int|string, mixed> $payload
17
     *
18
     * @return array<int|string, mixed>
19
     */
20
    public function trim(array $payload): array
21
    {
22
        foreach ($this->strategies as $strategy) {
23
            if (! $this->needsToBeTrimmed($payload)) {
24
                break;
25
            }
26
 
27
            $payload = (new $strategy($this))->execute($payload);
28
        }
29
 
30
        return $payload;
31
    }
32
 
33
    /**
34
     * @param array<int|string, mixed> $payload
35
     *
36
     * @return bool
37
     */
38
    public function needsToBeTrimmed(array $payload): bool
39
    {
40
        return strlen((string)json_encode($payload)) > self::getMaxPayloadSize();
41
    }
42
 
43
    public static function getMaxPayloadSize(): int
44
    {
45
        return self::$maxPayloadSize;
46
    }
47
 
48
    public static function setMaxPayloadSize(int $maxPayloadSize): void
49
    {
50
        self::$maxPayloadSize = $maxPayloadSize;
51
    }
52
}