| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 | <?phpdeclare(strict_types=1);/* * (c) Jeroen van den Enden <info@endroid.nl> * * This source file is subject to the MIT license that is bundled * with this source code in the file LICENSE. */namespace Endroid\QrCode;use Endroid\QrCode\Exception\InvalidWriterException;use Endroid\QrCode\Writer\BinaryWriter;use Endroid\QrCode\Writer\DebugWriter;use Endroid\QrCode\Writer\EpsWriter;use Endroid\QrCode\Writer\PngWriter;use Endroid\QrCode\Writer\SvgWriter;use Endroid\QrCode\Writer\WriterInterface;class WriterRegistry implements WriterRegistryInterface{    /** @var WriterInterface[] */    private $writers = [];    /** @var WriterInterface|null */    private $defaultWriter;    public function loadDefaultWriters(): void    {        if (count($this->writers) > 0) {            return;        }        $this->addWriters([            new BinaryWriter(),            new DebugWriter(),            new EpsWriter(),            new PngWriter(),            new SvgWriter(),        ]);        $this->setDefaultWriter('png');    }    public function addWriters(iterable $writers): void    {        foreach ($writers as $writer) {            $this->addWriter($writer);        }    }    public function addWriter(WriterInterface $writer): void    {        $this->writers[$writer->getName()] = $writer;    }    public function getWriter(string $name): WriterInterface    {        $this->assertValidWriter($name);        return $this->writers[$name];    }    public function getDefaultWriter(): WriterInterface    {        if ($this->defaultWriter instanceof WriterInterface) {            return $this->defaultWriter;        }        throw new InvalidWriterException('Please set the default writer via the second argument of addWriter');    }    public function setDefaultWriter(string $name): void    {        $this->defaultWriter = $this->writers[$name];    }    public function getWriters(): array    {        return $this->writers;    }    private function assertValidWriter(string $name): void    {        if (!isset($this->writers[$name])) {            throw new InvalidWriterException('Invalid writer "'.$name.'"');        }    }}
 |