| Current Path : /var/www/clients/client3/web2/web/vendor/jms/serializer/src/Builder/ |
| Current File : /var/www/clients/client3/web2/web/vendor/jms/serializer/src/Builder/CallbackDriverFactory.php |
<?php
declare(strict_types=1);
namespace JMS\Serializer\Builder;
use Doctrine\Common\Annotations\Reader;
use JMS\Serializer\Exception\LogicException;
use Metadata\Driver\DriverInterface;
final class CallbackDriverFactory implements DriverFactoryInterface
{
/**
* @var callable
* @phpstan-var callable(array $metadataDirs, Reader|null $reader): DriverInterface
*/
private $callback;
/**
* @phpstan-param callable(array $metadataDirs, Reader|null $reader): DriverInterface $callable
*/
public function __construct(callable $callable)
{
$this->callback = $callable;
}
public function createDriver(array $metadataDirs, ?Reader $reader = null): DriverInterface
{
$driver = \call_user_func($this->callback, $metadataDirs, $reader);
if (!$driver instanceof DriverInterface) {
throw new LogicException('The callback must return an instance of DriverInterface.');
}
return $driver;
}
}