• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

FluidTYPO3 / vhs / 30001290505

23 Jul 2026 10:57AM UTC coverage: 70.309% (-1.7%) from 72.022%
30001290505

push

github

NamelessCoder
[TER] 8.0.0

4819 of 6854 relevant lines covered (70.31%)

6.54 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

90.0
/Classes/ViewHelpers/Random/StringViewHelper.php
1
<?php
2
namespace FluidTYPO3\Vhs\ViewHelpers\Random;
3

4
/*
5
 * This file is part of the FluidTYPO3/Vhs project under GPLv2 or later.
6
 *
7
 * For the full copyright and license information, please read the
8
 * LICENSE.md file that was distributed with this source code.
9
 */
10

11
use FluidTYPO3\Vhs\Core\ViewHelper\AbstractViewHelper;
12
use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
13

14
/**
15
 * ### Random: String Generator
16
 *
17
 * Use either `minimumLength` / `maximumLength` or just `length`.
18
 *
19
 * Specify the characters which can be randomized using `characters`.
20
 */
21
class StringViewHelper extends AbstractViewHelper
22
{
23
    /**
24
     * @var boolean
25
     */
26
    protected $escapeOutput = false;
27

28
    public function initializeArguments(): void
29
    {
30
        $this->registerArgument('length', 'integer', 'Length of string to generate');
3✔
31
        $this->registerArgument('minimumLength', 'integer', 'Minimum length of string if random length', false, 32);
3✔
32
        $this->registerArgument('maximumLength', 'integer', 'Minimum length of string if random length', false, 32);
3✔
33
        $this->registerArgument('characters', 'string', 'Characters to use in string', false, '0123456789abcdef');
3✔
34
    }
35

36
    /**
37
     * @return string
38
     */
39
    public static function renderStatic(
40
        array $arguments,
41
        \Closure $renderChildrenClosure,
42
        RenderingContextInterface $renderingContext
43
    ) {
44
        /** @var int $length */
45
        $length = $arguments['length'];
3✔
46

47
        /** @var int $minimumLength */
48
        $minimumLength = $arguments['minimumLength'];
3✔
49
        $minimumLength = (int) $minimumLength;
3✔
50
        /** @var int $maximumLength */
51
        $maximumLength = $arguments['maximumLength'];
3✔
52
        $maximumLength = (int) $maximumLength;
3✔
53
        /** @var string $characters */
54
        $characters = $arguments['characters'];
3✔
55
        if ($minimumLength != $maximumLength) {
3✔
56
            /** @var int<1, max> $length */
57
            $length = random_int($minimumLength, $maximumLength);
×
58
        } else {
59
            /** @var int<1, max> $length */
60
            $length = $length !== null ? $length : $minimumLength;
3✔
61
        }
62
        $string = '';
3✔
63
        if ($characters === '0123456789abcdef') {
3✔
64
            $string = bin2hex(random_bytes($length));
×
65
        } else {
66
            for ($i = 0; $i < $length; $i++) {
3✔
67
                $randomIndex = random_int(0, max(mb_strlen($characters) - 1, 1));
3✔
68
                $string .= $characters[$randomIndex];
3✔
69
            }
70
        }
71
        return $string;
3✔
72
    }
73
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc