1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- <?php
- declare(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));
- }
- }
|