<?php class Secured { public function __construct( private readonly \SensitiveParameterValue $content ) { } public static function fromString( #[\SensitiveParameter] string $value, ) { return new self(new \SensitiveParameterValue($value)); } public function __toString(): string { return '**SECRET**'; } public function __debugInfo(): ?array { return [ 'content' => '**SECRET**' ]; } public function __serialize(): array { return []; } public function __unserialize(array $data): void { throw new \RuntimeException('The ' . __CLASS__ . ' class cannot be unserialized.'); } } function t(string $n, callable $c) { echo "$n ::::::::::::::::::::::::::::::::::::::::" . PHP_EOL; try { $c(); } catch (Throwable $e) { echo $e->getMessage() . PHP_EOL; } echo PHP_EOL; } function test(Secured|SensitiveParameterValue $secured) { echo 'Test ' .get_class($secured). ' _____________________________________________________________' . PHP_EOL; t('var_dump', fn () => var_dump($secured)); t('serialize', fn () => var_dump(serialize($secured))); t('print_r', fn () => print_r($secured)); t('casting', fn () => var_dump((string) $secured)); t('var_export', fn () => var_dump(var_export($secured, true))); } test(Secured::fromString('Lorem ipsum dolor')); test(new \SensitiveParameterValue('Lorem ipsum dolor'));
You have javascript disabled. You will not be able to edit any code.