<?php
final class SensitiveValue implements \Serializable
{
private $value;
/**
* @param mixed $value
*/
final public function __construct($value)
{
$this->value = $value;
}
/**
* @return mixed
*/
public function peek()
{
return $this->value;
}
/**
* @return mixed
*/
public function get()
{
$value = $this->value;
$this->erase();
return $value;
}
public function erase()
{
$this->value = null;
}
/**
* {@inheritDoc}
*/
public function serialize()
{
return;
}
/**
* {@inheritDoc}
*/
public function unserialize($serialized)
{
}
/**
* {@inheritDoc}
*/
public function __toString()
{
return '';
}
/**
* {@inheritDoc}
*/
public function __clone()
{
throw new \Exception('It is not permitted to clone this object.');
}
}
$value = new SensitiveValue(new \DateTime());
$time = $value->get();
echo $value->get()->format('Y-m-d');
Deprecated: SensitiveValue implements the Serializable interface, which is deprecated. Implement __serialize() and __unserialize() instead (or in addition, if support for old PHP versions is necessary) in /in/Yk7kd on line 3
Fatal error: Uncaught Error: Call to a member function format() on null in /in/Yk7kd:65
Stack trace:
#0 {main}
thrown in /in/Yk7kd on line 65
Process exited with code 255.
Output for 8.3.5
Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
Deprecated: SensitiveValue implements the Serializable interface, which is deprecated. Implement __serialize() and __unserialize() instead (or in addition, if support for old PHP versions is necessary) in /in/Yk7kd on line 3
Fatal error: Uncaught Error: Call to a member function format() on null in /in/Yk7kd:65
Stack trace:
#0 {main}
thrown in /in/Yk7kd on line 65
Process exited with code 255.
Fatal error: Uncaught Error: Call to a member function format() on null in /in/Yk7kd:65
Stack trace:
#0 {main}
thrown in /in/Yk7kd on line 65
Process exited with code 255.
Output for 5.6.8 - 5.6.28
Fatal error: Call to a member function format() on null in /in/Yk7kd on line 65
Process exited with code 255.
Output for 5.5.24 - 5.5.35
Fatal error: Call to a member function format() on a non-object in /in/Yk7kd on line 65
Process exited with code 255.