Quelltext des aktuellen Standes
<?php
declare(strict_types=1);
use OpenNIT\Core\View;
/**
* Die zentrale Maskierung in Vorlagen.
*
* Sie nimmt beliebige Werte an – auch solche, die aus einer Fremdquelle
* stammen und nicht wohlgeformt sind. Eine Anzeige darf daran höchstens
* Zeichen verlieren, nie die ganze Seite.
*/
return static function (): void {
$view = new View(sys_get_temp_dir());
test('Markup in Werten wird maskiert', function () use ($view) {
assertSame('<b>x</b>', $view->e('<b>x</b>'));
assertSame('', $view->e(null));
assertSame('42', $view->e(42));
});
test('Listen und Objekte werden als JSON gezeigt', function () use ($view) {
assertSame('{"a":1}', $view->e(['a' => 1]));
});
test('Eine Liste mit kaputten Zeichen bricht die Seite nicht', function () use ($view) {
// Melden Fremdsysteme Zeichen in einer anderen Kodierung, scheitert
// json_encode() – ohne Auffangen endete das in einem Typfehler und
// damit in der Fehlerseite.
$out = $view->e(['name' => "Ger\xE4t"]);
assertSame('string', gettype($out));
assertTrue(str_contains($out, 'name'), 'Der Schlüssel fehlt: ' . $out);
assertFalse(str_contains($out, '<'), 'Unmaskierte Klammer: ' . $out);
});
};