for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
declare(strict_types=1);
namespace drupol\valuewrapper\Object;
use Closure;
use SuperClosure\Serializer;
use function call_user_func_array;
use function func_get_args;
use function is_string;
/**
* Class ClosureObject.
*/
class ClosureObject extends ObjectValue
{
* @var \SuperClosure\Serializer
private $serializer;
* ClosureObject constructor.
*
* @param Closure $value
public function __construct(Closure $value)
parent::__construct($value);
$this->serializer = new Serializer();
}
* {@inheritdoc}
public function __invoke()
return call_user_func_array($this->value(), func_get_args());
public function hash(): string
return $this->doHash($this->type() . $this->serializer->serialize($this->value()));
public function serialize()
return serialize([
'value' => base64_encode($this->serializer->serialize($this->value())),
]);
public function unserialize($serialized)
$unserialized = unserialize($serialized);
$decoded = base64_decode($unserialized['value'], true);
if (is_string($decoded)) {
is_string($decoded)
true
$this->set(
$this->serializer->unserialize($decoded)
);