| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- <?php
- /**
- * custom output example
- *
- * @created 24.12.2017
- * @author Smiley <smiley@chillerlan.net>
- * @copyright 2017 Smiley
- * @license MIT
- *
- * @noinspection PhpIllegalPsrClassPathInspection
- */
- use chillerlan\QRCode\{QRCode, QROptions};
- use chillerlan\QRCode\Common\EccLevel;
- use chillerlan\QRCode\Output\{QROutputAbstract, QROutputInterface};
- require_once __DIR__.'/../vendor/autoload.php';
- /*
- * Class definition
- */
- class MyCustomOutput extends QROutputAbstract{
- /**
- * @inheritDoc
- */
- public static function moduleValueIsValid($value):bool{
- // TODO: Implement moduleValueIsValid() method. (interface)
- return false;
- }
- /**
- * @inheritDoc
- */
- protected function prepareModuleValue($value){
- // TODO: Implement prepareModuleValue() method. (abstract)
- return null;
- }
- /**
- * @inheritDoc
- */
- protected function getDefaultModuleValue(bool $isDark){
- // TODO: Implement getDefaultModuleValue() method. (abstract)
- return null;
- }
- /**
- * @inheritDoc
- */
- public function dump(?string $file = null):string{
- $output = '';
- for($y = 0; $y < $this->moduleCount; $y++){
- for($x = 0; $x < $this->moduleCount; $x++){
- $output .= (int)$this->matrix->check($x, $y);
- }
- $output .= $this->options->eol;
- }
- return $output;
- }
- }
- /*
- * Runtime
- */
- $options = new QROptions;
- $options->version = 5;
- $options->eccLevel = EccLevel::L;
- $data = 'https://www.youtube.com/watch?v=DLzxrzFCyOs&t=43s';
- // invoke the QROutputInterface manually
- // please note that an QROutputInterface invoked this way might become unusable after calling dump().
- // the clean way would be to extend the QRCode class to ensure a new QROutputInterface instance on each call to render().
- $qrcode = new QRCode($options);
- $qrcode->addByteSegment($data);
- $qrOutputInterface = new MyCustomOutput($options, $qrcode->getQRMatrix());
- var_dump($qrOutputInterface->dump());
- // or just via the options
- $options->outputType = QROutputInterface::CUSTOM;
- $options->outputInterface = MyCustomOutput::class;
- var_dump((new QRCode($options))->render($data));
- exit;
|