Builder a možnosti
Qr::…() vracia nemenný PendingQr: každé volanie vráti upravenú kópiu, takže nakonfigurovaný builder môžete bezpečne použiť opakovane. Všetky možnosti naraz:
use RoundlyConsulting\Qr\Enums\{EciMode, ErrorCorrection, FinderStyle, ModuleStyle, Segmentation, Sensitivity};
$svg = Qr::text('ABC-123')
->errorCorrection(ErrorCorrection::High) // or 'H'
->versions(2, 10) // or ->version(5)
->mask(3) // null = automatic
->boostErrorCorrection(false)
->eci(EciMode::Never)
->segmentation(Segmentation::Optimal) // Optimal | Single | Byte
->kanji()
->size(null) // responsive (no width/height)
->margin(4)
->foreground('#1a1a1a')
->background('transparent')
->moduleStyle(ModuleStyle::Rounded, 0.35)
->finderStyle(FinderStyle::Rounded, '#0a58ca')
->title('Order ABC-123')
->description('Opens the order page')
->xmlDeclaration()
->sensitivity(Sensitivity::Public)
->svg();Prehľad metód
| Skupina | Metódy |
|---|---|
| Kódovanie | errorCorrection(ErrorCorrection|string), version(int), versions(int, int), mask(?int), boostErrorCorrection(bool = true), eci(EciMode), segmentation(Segmentation), kanji(bool = true) |
| Vykreslenie | size(?int), margin(int), foreground(string), background(string), moduleStyle(ModuleStyle, ?float $radius), finderStyle(FinderStyle, ?string $color), title(?string), description(?string), xmlDeclaration(bool = true) |
| Politika | sensitivity(Sensitivity), withOptions(QrOptions) |
| Terminály | matrix(): QrMatrix, info(): EncodingInfo, fits(): bool (uspel by matrix()? — bez zostavenia symbolu), svg(): Svg, toDataUri(DataUriEncoding), toHtml(), toResponse($request), __toString(), payload(): Payload |
Settery validujú okamžite — veľkosť, okraj, maska alebo polomer mimo rozsahu vyhodí InvalidOptionException, neznáma farba InvalidColorException.
Nastavenia jedným volaním
Odovzdajte DTO QrOptions do Qr::svg() / Qr::matrix() / Qr::info() alebo ho aplikujte na existujúci builder cez withOptions():
use RoundlyConsulting\Qr\DataTransferObjects\QrOptions;
$svg = Qr::svg('https://example.com', new QrOptions(size: 200, errorCorrection: ErrorCorrection::Medium));
$matrix = Qr::matrix('hello', new QrOptions(mask: 2));
$info = Qr::info('hello', new QrOptions(errorCorrection: ErrorCorrection::High)); // EncodingInfo
$svg = Qr::text('hi')->withOptions(new QrOptions(foreground: '#333333'))->svg();Každé pole QrOptions je nullable; null znamená nenastavené, takže rozhodne payload alebo konfigurácia:
new QrOptions( // every field nullable; null = not set (payload / config decide)
size: 200, margin: 2, errorCorrection: ErrorCorrection::Quartile, minVersion: 1, maxVersion: 10,
mask: null, foreground: '#111111', background: 'transparent', moduleStyle: ModuleStyle::Rounded,
finderStyle: FinderStyle::Rounded, title: 'Menu', description: null, eci: EciMode::Never,
sensitivity: Sensitivity::Public,
);Priorita a zámky
- Explicitné volania buildera a withOptions() zapisujú do tých istých slotov — platí posledný zápis.
- Potom požiadavky payloadu (PayloadRequirements).
- Potom konfigurácia.
- Maximálna verzia payloadu je pevný strop.
- Nastavenia, ktoré určuje platobný štandard (EPC: úroveň M, režim byte, bez ECI, bez zvyšovania; PAY by square: jeden alfanumerický segment, bez ECI), pri prepísaní inou hodnotou vyhodia pri terminálnom volaní InvalidOptionException — rovnaká hodnota nič nemení.
Titulok a popis
Prístupný titulok je predvolene preklad qr::qr.title („QR code“); popis je predvolene preklad podľa typu payloadu (qr::qr.descriptions.*), ktorý nikdy neobsahuje tajomstvo, meno, IBAN ani sumu — kódy s URL uvádzajú len hostiteľa. Oboje prepíšete cez title() / description().
Enumy
| Enum | Hodnoty |
|---|---|
ErrorCorrection | Low (L), Medium (M), Quartile (Q), High (H) — recoveryPercent(), stronger(), tryFromInput() |
EciMode | Auto, Always, Never |
Segmentation | Optimal, Single, Byte |
ModuleStyle | Square, Rounded, Dots |
FinderStyle | Square, Rounded |
DataUriEncoding | Percent, Base64 |
Sensitivity | Public, Personal, Secret — isCacheable(), cacheControl() |
Každý enum je backed a má pomocné metódy z enums-for-laravel, takže ho môžete priamo použiť pre select alebo validačné pravidlo.
Kontrola kódu
$matrix = Qr::matrix('HELLO WORLD'); // QrMatrix: version(), mask(), isDark($x, $y), rows()
$info = Qr::text('HELLO WORLD')->info(); // EncodingInfo: segments, data/capacity bits, mask penalties
echo $matrix->toText(); // debug print in the terminalPrejavte lásku k open source
Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.
Ďalšie spôsoby podpory vrátane kryptomienOdoslaním daru súhlasíte s našimi podmienkami prijímania darov.
Chcete to zabudovať do svojho produktu?
Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.