From a8076a113ba7dbd6fd73eec225bc72207d57cea1 Mon Sep 17 00:00:00 2001 From: smiley Date: Wed, 18 Mar 2026 02:14:28 +0100 Subject: [PATCH] :octocat: Version::$versionNumber: remove property getter in favor of asymmetric visibility --- benchmark/DecoderBenchmark.php | 2 +- benchmark/MaskPatternBenchmark.php | 2 +- benchmark/OutputBenchmark.php | 2 +- benchmark/QRCodeBenchmark.php | 2 +- benchmark/QRDataBenchmark.php | 4 ++-- src/Common/EccLevel.php | 2 +- src/Common/Version.php | 23 ++++++++--------------- src/Data/QRData.php | 2 +- src/Decoder/Decoder.php | 2 +- src/Output/QRStringJSON.php | 2 +- tests/Common/VersionTest.php | 2 +- tests/Data/DataInterfaceTestAbstract.php | 10 +++++----- tests/Data/QRDataTest.php | 4 ++-- tests/Data/QRMatrixTest.php | 6 +++--- tests/QRCodeReaderTestAbstract.php | 4 ++-- tests/Traits/QRMatrixDebugTrait.php | 2 +- tests/Traits/QRMaxLengthTrait.php | 2 +- 17 files changed, 33 insertions(+), 40 deletions(-) diff --git a/benchmark/DecoderBenchmark.php b/benchmark/DecoderBenchmark.php index 9c85ded6c..0ea52160a 100644 --- a/benchmark/DecoderBenchmark.php +++ b/benchmark/DecoderBenchmark.php @@ -32,7 +32,7 @@ final class DecoderBenchmark extends BenchmarkAbstract{ public function initOptions():void{ $options = [ - 'version' => $this->version->getVersionNumber(), + 'version' => $this->version->versionNumber, 'eccLevel' => $this->eccLevel->level, 'scale' => 2, 'imageTransparent' => false, diff --git a/benchmark/MaskPatternBenchmark.php b/benchmark/MaskPatternBenchmark.php index 1013b0e3e..576a6b326 100644 --- a/benchmark/MaskPatternBenchmark.php +++ b/benchmark/MaskPatternBenchmark.php @@ -32,7 +32,7 @@ final class MaskPatternBenchmark extends BenchmarkAbstract{ public function initOptions():void{ $options = [ - 'version' => $this->version->getVersionNumber(), + 'version' => $this->version->versionNumber, 'eccLevel' => $this->eccLevel->level, ]; diff --git a/benchmark/OutputBenchmark.php b/benchmark/OutputBenchmark.php index f4f4c091e..efd2ed61e 100644 --- a/benchmark/OutputBenchmark.php +++ b/benchmark/OutputBenchmark.php @@ -29,7 +29,7 @@ final class OutputBenchmark extends BenchmarkAbstract{ public function initOptions():void{ $options = [ - 'version' => $this->version->getVersionNumber(), + 'version' => $this->version->versionNumber, 'eccLevel' => $this->eccLevel->level, 'connectPaths' => true, 'drawLightModules' => true, diff --git a/benchmark/QRCodeBenchmark.php b/benchmark/QRCodeBenchmark.php index fdccfe410..a75a5ee44 100644 --- a/benchmark/QRCodeBenchmark.php +++ b/benchmark/QRCodeBenchmark.php @@ -22,7 +22,7 @@ abstract class QRCodeBenchmark extends BenchmarkAbstract{ public function initOptions():void{ $options = [ - 'version' => $this->version->getVersionNumber(), + 'version' => $this->version->versionNumber, 'eccLevel' => $this->eccLevel->level, ]; diff --git a/benchmark/QRDataBenchmark.php b/benchmark/QRDataBenchmark.php index 719240ba6..c021e3178 100644 --- a/benchmark/QRDataBenchmark.php +++ b/benchmark/QRDataBenchmark.php @@ -28,7 +28,7 @@ final class QRDataBenchmark extends BenchmarkAbstract{ public function initOptions():void{ $options = [ - 'version' => $this->version->getVersionNumber(), + 'version' => $this->version->versionNumber, 'eccLevel' => $this->eccLevel->level, ]; @@ -71,7 +71,7 @@ final class QRDataBenchmark extends BenchmarkAbstract{ #[Subject] #[BeforeMethods(['assignParams', 'generateTestData', 'initOptions', 'initQRData', 'initBitBuffer'])] public function decodeSegment():void{ - $this->dataMode->decodeSegment(clone $this->bitBuffer, $this->version->getVersionNumber()); + $this->dataMode->decodeSegment(clone $this->bitBuffer, $this->version->versionNumber); } } diff --git a/src/Common/EccLevel.php b/src/Common/EccLevel.php index c49c239e5..f775481ff 100644 --- a/src/Common/EccLevel.php +++ b/src/Common/EccLevel.php @@ -204,7 +204,7 @@ final class EccLevel{ * Returns the maximum bit length for the given version and current ECC level */ public function getMaxBitsForVersion(Version $version):int{ - return self::MAX_BITS[$version->getVersionNumber()][$this->getOrdinal()]; + return self::MAX_BITS[$version->versionNumber][$this->getOrdinal()]; } } diff --git a/src/Common/Version.php b/src/Common/Version.php index bfc4f1126..53157b16b 100644 --- a/src/Common/Version.php +++ b/src/Common/Version.php @@ -216,7 +216,7 @@ final class Version{ /** * QR Code version number */ - private int $version; + private(set) int $versionNumber; /** * Version constructor. @@ -229,35 +229,28 @@ final class Version{ throw new QRCodeException('invalid version given'); } - $this->version = $version; + $this->versionNumber = $version; } /** * returns the current version number as string */ public function __toString():string{ - return (string)$this->version; - } - - /** - * returns the current version number - */ - public function getVersionNumber():int{ - return $this->version; + return (string)$this->versionNumber; } /** * the matrix size for the given version */ public function getDimension():int{ - return (($this->version * 4) + 17); + return (($this->versionNumber * 4) + 17); } /** * the version pattern for the given version */ public function getVersionPattern():int|null{ - return (self::VERSION_PATTERN[$this->version] ?? null); + return (self::VERSION_PATTERN[$this->versionNumber] ?? null); } /** @@ -266,21 +259,21 @@ final class Version{ * @return int[] */ public function getAlignmentPattern():array{ - return self::ALIGNMENT_PATTERN[$this->version]; + return self::ALIGNMENT_PATTERN[$this->versionNumber]; } /** * returns ECC block information for the given $version and $eccLevel */ public function getRSBlocks(EccLevel $eccLevel):array{ - return self::RSBLOCKS[$this->version][$eccLevel->getOrdinal()]; + return self::RSBLOCKS[$this->versionNumber][$eccLevel->getOrdinal()]; } /** * returns the maximum codewords for the current version */ public function getTotalCodewords():int{ - return self::TOTAL_CODEWORDS[$this->version]; + return self::TOTAL_CODEWORDS[$this->versionNumber]; } } diff --git a/src/Data/QRData.php b/src/Data/QRData.php index 517afc1bb..3e7b78612 100644 --- a/src/Data/QRData.php +++ b/src/Data/QRData.php @@ -210,7 +210,7 @@ final class QRData{ $MAX_BITS = $this->eccLevel->getMaxBitsForVersion($this->version); foreach($this->dataSegments as $segment){ - $segment->write($this->bitBuffer, $this->version->getVersionNumber()); + $segment->write($this->bitBuffer, $this->version->versionNumber); } // overflow, likely caused due to invalid version setting diff --git a/src/Decoder/Decoder.php b/src/Decoder/Decoder.php index 465a00b44..e1a8bc3b5 100644 --- a/src/Decoder/Decoder.php +++ b/src/Decoder/Decoder.php @@ -107,7 +107,7 @@ final class Decoder{ */ private function decodeBitStream(BitBuffer $bitBuffer):DecoderResult{ $this->bitBuffer = $bitBuffer; - $versionNumber = $this->version->getVersionNumber(); + $versionNumber = $this->version->versionNumber; $symbolSequence = -1; $parityData = -1; $fc1InEffect = false; diff --git a/src/Output/QRStringJSON.php b/src/Output/QRStringJSON.php index d721167bc..9d9658c81 100644 --- a/src/Output/QRStringJSON.php +++ b/src/Output/QRStringJSON.php @@ -50,7 +50,7 @@ class QRStringJSON extends QROutputAbstract{ $json = [ '$schema' => $this::SCHEMA, 'qrcode' => [ - 'version' => $version->getVersionNumber(), + 'version' => $version->versionNumber, 'eccLevel' => (string)$this->matrix->eccLevel, 'matrix' => [ 'size' => $dimension, diff --git a/tests/Common/VersionTest.php b/tests/Common/VersionTest.php index 09fac2e89..25dc0ecce 100644 --- a/tests/Common/VersionTest.php +++ b/tests/Common/VersionTest.php @@ -34,7 +34,7 @@ final class VersionTest extends TestCase{ #[Test] public function getVersionNumber():void{ - $this::assertSame(7, $this->version->getVersionNumber()); + $this::assertSame(7, $this->version->versionNumber); } #[Test] diff --git a/tests/Data/DataInterfaceTestAbstract.php b/tests/Data/DataInterfaceTestAbstract.php index 43615bfef..d0d8fca73 100644 --- a/tests/Data/DataInterfaceTestAbstract.php +++ b/tests/Data/DataInterfaceTestAbstract.php @@ -178,7 +178,7 @@ abstract class DataInterfaceTestAbstract extends TestCase{ #[DataProvider('maxLengthProvider')] public function maxLength(Version $version, EccLevel $eccLevel, string $str, string $str1, int $len):void{ $options = new QROptions; - $options->version = $version->getVersionNumber(); + $options->version = $version->versionNumber; $options->eccLevel = $eccLevel->level; $this->dataMode = static::getDataModeInterface($str); @@ -207,13 +207,13 @@ abstract class DataInterfaceTestAbstract extends TestCase{ $this::assertLessThanOrEqual($eccLevel->getMaxBitsForVersion($version), $this->QRData->estimateTotalBitLength()); - $minimumVersionNumber = $this->QRData->getMinimumVersion()->getVersionNumber(); + $minimumVersionNumber = $this->QRData->getMinimumVersion()->versionNumber; try{ - $this::assertSame($version->getVersionNumber(), $minimumVersionNumber); + $this::assertSame($version->versionNumber, $minimumVersionNumber); } catch(ExpectationFailedException){ - $this::assertSame(($version->getVersionNumber() + 1), $minimumVersionNumber, 'safety margin'); + $this::assertSame(($version->versionNumber + 1), $minimumVersionNumber, 'safety margin'); } // verify the encoded data @@ -231,7 +231,7 @@ abstract class DataInterfaceTestAbstract extends TestCase{ $this->expectExceptionMessage('code length overflow'); $options = new QROptions; - $options->version = $version->getVersionNumber(); + $options->version = $version->versionNumber; $options->eccLevel = $eccLevel->level; diff --git a/tests/Data/QRDataTest.php b/tests/Data/QRDataTest.php index c853211cd..0315ef258 100644 --- a/tests/Data/QRDataTest.php +++ b/tests/Data/QRDataTest.php @@ -47,7 +47,7 @@ final class QRDataTest extends TestCase{ $matrix->setFormatInfo($maskPattern)->mask($maskPattern); - $this::assertSame(3, $matrix->version->getVersionNumber()); + $this::assertSame(3, $matrix->version->versionNumber); // attempt to read $options->outputBase64 = false; @@ -82,7 +82,7 @@ final class QRDataTest extends TestCase{ $qrData = new QRData($options, [new Byte($str)]); $this::assertSame(976, $qrData->estimateTotalBitLength()); - $this::assertSame(11, $qrData->getMinimumVersion()->getVersionNumber()); // version adjusted to 11 + $this::assertSame(11, $qrData->getMinimumVersion()->versionNumber); // version adjusted to 11 } } diff --git a/tests/Data/QRMatrixTest.php b/tests/Data/QRMatrixTest.php index a87c1d14b..01e7ba612 100755 --- a/tests/Data/QRMatrixTest.php +++ b/tests/Data/QRMatrixTest.php @@ -51,7 +51,7 @@ final class QRMatrixTest extends TestCase{ */ #[Test] public function getVersion():void{ - $this::assertSame($this::version, $this->matrix->version->getVersionNumber()); + $this::assertSame($this::version, $this->matrix->version->versionNumber); } /** @@ -162,7 +162,7 @@ final class QRMatrixTest extends TestCase{ public function setAlignmentPattern(QRMatrix $matrix):void{ $version = $matrix->version; - if($version->getVersionNumber() === 1){ + if($version->versionNumber === 1){ $this::markTestSkipped('N/A (Version 1 has no alignment pattern)'); } @@ -222,7 +222,7 @@ final class QRMatrixTest extends TestCase{ #[DataProvider('matrixProvider')] public function setVersionNumber(QRMatrix $matrix):void{ - if($matrix->version->getVersionNumber() < 7){ + if($matrix->version->versionNumber < 7){ $this::markTestSkipped('N/A (Version < 7)'); } diff --git a/tests/QRCodeReaderTestAbstract.php b/tests/QRCodeReaderTestAbstract.php index 9839bc79d..ac72d1ea2 100644 --- a/tests/QRCodeReaderTestAbstract.php +++ b/tests/QRCodeReaderTestAbstract.php @@ -163,7 +163,7 @@ abstract class QRCodeReaderTestAbstract extends TestCase{ $this->options->outputInterface = QRGdImagePNG::class; $this->options->imageTransparent = false; $this->options->eccLevel = $ecc->level; - $this->options->version = $version->getVersionNumber(); + $this->options->version = $version->versionNumber; $this->options->outputBase64 = false; // what's interesting is that a smaller scale seems to produce fewer reader errors??? // usually from version 20 up, independend of the luminance source @@ -177,7 +177,7 @@ abstract class QRCodeReaderTestAbstract extends TestCase{ $result = $qrcode->readFromBlob($imagedata); $this::assertSame($expected, $result->data); - $this::assertSame($version->getVersionNumber(), $result->version->getVersionNumber()); + $this::assertSame($version->versionNumber, $result->version->versionNumber); $this::assertSame($ecc->level, $result->eccLevel->level); } catch(Exception $e){ diff --git a/tests/Traits/QRMatrixDebugTrait.php b/tests/Traits/QRMatrixDebugTrait.php index 0bdeb0885..00cac66a3 100644 --- a/tests/Traits/QRMatrixDebugTrait.php +++ b/tests/Traits/QRMatrixDebugTrait.php @@ -85,7 +85,7 @@ trait QRMatrixDebugTrait{ // limit /** @noinspection PhpUndefinedConstantInspection - see phpunit.xml.dist */ - if(!defined('MATRIX_DEBUG_VERSION') || $matrix->version->getVersionNumber() !== MATRIX_DEBUG_VERSION){ + if(!defined('MATRIX_DEBUG_VERSION') || $matrix->version->versionNumber !== MATRIX_DEBUG_VERSION){ return; } diff --git a/tests/Traits/QRMaxLengthTrait.php b/tests/Traits/QRMaxLengthTrait.php index 5db20f2dd..8f4518a2e 100644 --- a/tests/Traits/QRMaxLengthTrait.php +++ b/tests/Traits/QRMaxLengthTrait.php @@ -91,7 +91,7 @@ trait QRMaxLengthTrait{ throw new QRCodeException('invalid $mode'); } - $ver = $version->getVersionNumber(); + $ver = $version->versionNumber; $ecc = $eccLevel->getOrdinal(); if(!isset(static::MAX_LENGTH[$ver])){