Skip to content

Releases: chillerlan/php-qrcode

5.0.2

27 Feb 15:06
Compare
Choose a tag to compare
  • fixed a bug in the QR Code version auto detection when the given data segment was the exact same bit size as the maximum for the guessed provisional version, added a safety margin of 4 bits, which forces the next available version in that case.

5.0.1

08 Jan 11:41
Compare
Choose a tag to compare
  • ReedSolomonDecoder now throws a QRCodeDecoderException instead of the generic QRCodeException
  • added a .gitattributes file (#234)
  • minor performance (QRMatrix) and type safety (MaskPattern) improvements
  • branch adjustments
  • dependency updates
  • test cleanup and improvements

4.4.1

08 Jan 11:45
Compare
Choose a tag to compare
  • added a .gitattributes file (#234)
  • dependency updates

5.0.0

24 Nov 16:04
Compare
Choose a tag to compare

Hi! It's been a while since the last major version - has it already been over three years and seven million downloads??? Time flies...
v5 was supposed to be released earlier this year already, but various health issues kept me from working on it and I kept y'all waiting and using dev-main and the v5-beta instead - but hey, the wait is over now!

The new version comes with countless internal changes, mostly to incooperate the ZXing QR Code reader and open the possibility for other types of barcodes, such as micro QR.
A lot of things have been deprecated and moved in order to clean up for v6 which is intended to support PHP 8.2+ (or maybe 8.3+ even). See the attached discussion thread for a full list of changes and deprecations.

IMPORTANT: v5 will be branched out and the main branch will become (or rather remain) the active development branch towards v6. If you have used the composer version dev-main without a commit hash in the past, please make sure to update the requirement ASAP. You have been warned.

Also, a big thank you to everyone who submitted issue reports and opened discussions and helped to improve this library!

Ko-fi Paypal

New Features

Changes

  • [breaking] The default output has been changed from PNG (GdImage) to SVG. No image processing extension (ext-gd or ext-imagick) required anymore!
  • [breaking] The default output format of the built-in output classes is now a base64 data URI (if applicable) so that it can be directly embedded as src into an <img> tag. This can be disabled by setting QROptions::$outputBase64 to false.
  • [breaking] The default value of QROptions::$imageTransparent has been set to false due to various issues and misconceptions with transparency in GD and ImageMagick, therefore: use at your own risk.
  • [breaking] The values of the QRMatrix::M_* constants and therefore the keys of the QROptions::$moduleValues array have changed. QRMatrix::M_*_DARK constants have been introduced for convenience. The module values are now a proper bitmask, the dark value is now calculated (QRMatrix::M_* | QRMatrix::IS_DARK) instead of (QRMatrix::M_* << 8).
  • [breaking] The output class QRMarkup has been changed to abstract, inheritors are now QRMarkupHTML and QRMarkupSVG (QRMarkupXML anyone?).
  • [possibly breaking] The fill-opacity attribute (and its respective setting QROptions::$svgOpacity) has been removed from QRMarkupSVG::path() as it can be set by CSS.
  • [possibly breaking] The QROptions::$markupDark and QROptions::$markupLight settings have been removed - they can be set via overriding QRMarkup::getDefaultModuleValue().
  • [possibly breaking] The QROptions::$textDark and QROptions::$textLight settings have been removed - they can be set via overriding QRString::getDefaultModuleValue().
  • The module value validation method QROutputInterface::moduleValueIsValid() is now public static, so that input values can be checked before invoking the options, e.g. QRMarkupSVG::moduleValueIsValid('#aabbcc'). Please note that in case of HTML and SVG it will only check for the basic syntax, it will not validate or sanitize the values.
  • The GD output class now also supports BMP and WEBP output.
  • The formerly GD exclusive options QROptions::$jpegQuality and QROptions::$pngCompression have been deprecated in favor of the more generic QROptions::$quality.
  • The setting QROptions::$svgUseFillAttributes has been added to toggle fill attributes on the SVG <path> elements in QRMarkupSVG::path() (this was previously done via setting QROptions::$markupDark and QROptions::$markupLight to an empty value).

4.4.0

24 Nov 14:12
Compare
Choose a tag to compare

Maintenance release

This release serves as the final v4.x release and as an intermediate to v5 (unless something weird happens and I have to backport a bugfix or so...) - both versions support PHP 7.4+, so there's actually no reason to hold onto v4.x unless you're running extensive custom output classes, in which case this release is for you.

  • added QRMatrix::M_*_DARK constants for convenience (v5 backport). These constants should have been added way earlier as the current way to specify the QROptions:$moduleValues is highly unintuitive.
  • added PHPCS and PHPMD configurations as well as a .editorconfig
  • changed the values of QRMatrix::M_DARKMODULE and QRMatrix::M_FINDER_DOT to reflect their supposed dark values, QRMatrix::M_DARKMODULE_LIGHT and QRMatrix::M_FINDER_DOT_LIGHT have been added with the original values as placeholders for reflectance reversal. This change is backward incompatible, however, the worst that can happen is that the module values (if specified) will fall back to their internal defaults.
  • changed the default values of QROptions::$textDark and QROptions::$textLight from 🔴 and to ██ and ░░, respectively. (see here)
  • removed public and examples namespaces from autoload-dev
  • removed Scrutinizer CI in favour of Codacy
  • cleanup: all examples are now self-contained
  • dependency updates
  • CI updates

5.0-beta

22 Mar 21:16
Compare
Choose a tag to compare
5.0-beta Pre-release
Pre-release

It's here! The main public API is finished so far. What's left is some cleanup and documenting. Check out the release notes and feel free to leave feedback in the linked discussion thread. Thanks!

{
	"minimum-stability": "beta",
	"prefer-stable": true,
	"require": {
		"php": "^7.4 || ^8.0",
		"chillerlan/php-qrcode": "5.0-beta"
	}
}

4.3.4

25 Jul 09:51
Compare
Choose a tag to compare
  • Fixed QRCode::isByte(): string "0" fails with empty()
  • Require chillerlan/php-settings-container: ^2.1.4 to fix a PHP 8.1 deprecation warning. See chillerlan/php-settings-container#2
  • CI updates

4.3.3

28 Feb 13:29
Compare
Choose a tag to compare
  • fix PHP 8.1 deprecation warning for strtolower() (#97)

4.3.2

18 Nov 10:08
Compare
Choose a tag to compare

Service release:

  • CI fixes/updates
  • dependency updates
  • cleanup

v4.3.x will be branched out from here in favor of v5 on main.

3.4.1

09 Sep 09:02
Compare
Choose a tag to compare
  • PHP8 compatibility

This is a fire-and-forget release! Reminder that PHP 7.2 is already EOL and 7.3 is EOL by December 2021. Fix your composer.json requirements now!