| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 | <?phpdeclare(strict_types = 1);namespace BaconQrCode;use BaconQrCode\Common\ErrorCorrectionLevel;use BaconQrCode\Encoder\Encoder;use BaconQrCode\Exception\InvalidArgumentException;use BaconQrCode\Renderer\RendererInterface;/** * QR code writer. */final class Writer{    /**     * Renderer instance.     *     * @var RendererInterface     */    private $renderer;    /**     * Creates a new writer with a specific renderer.     */    public function __construct(RendererInterface $renderer)    {        $this->renderer = $renderer;    }    /**     * Writes QR code and returns it as string.     *     * Content is a string which *should* be encoded in UTF-8, in case there are     * non ASCII-characters present.     *     * @throws InvalidArgumentException if the content is empty     */    public function writeString(        string $content,        string $encoding = Encoder::DEFAULT_BYTE_MODE_ECODING,        ?ErrorCorrectionLevel $ecLevel = null    ) : string {        if (strlen($content) === 0) {            throw new InvalidArgumentException('Found empty contents');        }        if (null === $ecLevel) {            $ecLevel = ErrorCorrectionLevel::L();        }        return $this->renderer->render(Encoder::encode($content, $ecLevel, $encoding));    }    /**     * Writes QR code to a file.     *     * @see Writer::writeString()     */    public function writeFile(        string $content,        string $filename,        string $encoding = Encoder::DEFAULT_BYTE_MODE_ECODING,        ?ErrorCorrectionLevel $ecLevel = null    ) : void {        file_put_contents($filename, $this->writeString($content, $encoding, $ecLevel));    }}
 |