🚿 DecoderResult cleanup

This commit is contained in:
smiley
2022-05-09 18:46:49 +02:00
parent bd67995b44
commit 24c7a148c3
3 changed files with 52 additions and 35 deletions
+1 -1
View File
@@ -318,7 +318,7 @@ final class Decoder{
return new DecoderResult([
'rawBytes' => $bytes,
'text' => $result,
'data' => $result,
'version' => $version,
'eccLevel' => $ecLevel,
'structuredAppendParity' => $parityData,
+47 -32
View File
@@ -11,54 +11,69 @@
namespace chillerlan\QRCode\Decoder;
use chillerlan\Settings\SettingsContainerAbstract;
use chillerlan\QRCode\Common\{EccLevel, Version};
use chillerlan\QRCode\Common\{EccLevel, MaskPattern, Version};
use function property_exists;
/**
* Encapsulates the result of decoding a matrix of bits. This typically
* applies to 2D barcode formats. For now it contains the raw bytes obtained,
* as well as a String interpretation of those bytes, if applicable.
*
* @property int[] $rawBytes
* @property string $text
* @property \chillerlan\QRCode\Common\Version $version
* @property \chillerlan\QRCode\Common\EccLevel $eccLevel
* @property int $structuredAppendParity
* @property int $structuredAppendSequence
* @property int[] $rawBytes
* @property string $data
* @property \chillerlan\QRCode\Common\Version $version
* @property \chillerlan\QRCode\Common\EccLevel $eccLevel
* @property \chillerlan\QRCode\Common\MaskPattern $maskPattern
* @property int $structuredAppendParity
* @property int $structuredAppendSequence
*/
final class DecoderResult extends SettingsContainerAbstract{
final class DecoderResult{
protected array $rawBytes;
protected string $text;
protected Version $version;
protected EccLevel $eccLevel;
protected int $structuredAppendParity = -1;
protected int $structuredAppendSequence = -1;
protected array $rawBytes;
protected string $data;
protected Version $version;
protected EccLevel $eccLevel;
protected MaskPattern $maskPattern;
protected int $structuredAppendParity = -1;
protected int $structuredAppendSequence = -1;
/**
* @inheritDoc
* DecoderResult constructor.
*/
public function __set($property, $value):void{
// noop, read-only
}
public function __construct(iterable $properties = null){
/**
* @inheritDoc
*/
public function __toString():string{
return $this->text;
}
if(!empty($properties)){
/**
* @inheritDoc
*/
public function fromIterable(iterable $properties):self{
foreach($properties as $property => $value){
if(!property_exists($this, $property)){
continue;
}
$this->{$property} = $value;
}
foreach($properties as $key => $value){
parent::__set($key, $value);
}
return $this;
}
/**
* @return mixed|null
*/
public function __get(string $property){
if(property_exists($this, $property)){
return $this->{$property};
}
return null;
}
/**
*
*/
public function __toString():string{
return $this->data;
}
/**
+4 -2
View File
@@ -97,7 +97,9 @@ abstract class QRCodeReaderTestAbstract extends TestCase{
->addByteSegment($byte)
;
$this::assertSame($numeric.$alphanum.$kanji.$byte, (string)$qrcode->readFromBlob($qrcode->render()));
$result = $qrcode->readFromBlob($qrcode->render());
$this::assertSame($numeric.$alphanum.$kanji.$byte, $result->data);
}
public function dataTestProvider():Generator{
@@ -140,7 +142,7 @@ abstract class QRCodeReaderTestAbstract extends TestCase{
$this::markTestSkipped(sprintf('skipped version %s%s: %s', $version, $ecc, $e->getMessage()));
}
$this::assertSame($expected, $result->text);
$this::assertSame($expected, $result->data);
$this::assertSame($version->getVersionNumber(), $result->version->getVersionNumber());
$this::assertSame($ecc->getLevel(), $result->eccLevel->getLevel());
}