PHP Classes

File: src/Contracts/QRCodeGeneratorInterface.php

Recommend this page to a friend!
  Packages of Amirreza Ebrahimi   HeroQR Powerful PHP QR Code Library to generate PNG, SVG, PDF, Logos Ready to Use with Laravel   src/Contracts/QRCodeGeneratorInterface.php   Download  
File: src/Contracts/QRCodeGeneratorInterface.php
Role: Class source
Content type: text/plain
Description: Class source
Class: HeroQR Powerful PHP QR Code Library to generate PNG, SVG, PDF, Logos Ready to Use with Laravel
Generate QR code images in several formats
Author: By
Last change: Update of src/Contracts/QRCodeGeneratorInterface.php
Date: 6 months ago
Size: 5,343 bytes
 

Contents

Class file image Download
<?php

namespace HeroQR\Contracts;

use
Endroid\QrCode\Matrix\Matrix;
use
HeroQR\DataTypes\DataType;

/**
 * Interface QRCodeGeneratorInterface
 *
 * This interface defines methods for generating and customizing QR codes, including
 * setting data, size, color, margin, logo, label, and encoding. It also provides
 * methods for generating the QR code in various formats, retrieving the matrix
 * representation, and saving the QR code to a file.
 *
 * @package HeroQR\Contracts
 */
interface QRCodeGeneratorInterface
{
   
/**
     * Generate a QR code in the specified format
     *
     * @param string $format The desired output format (e.g., 'png', 'svg')
     * @return self
     * @throws \InvalidArgumentException If the format is invalid
     */
   
public function generate(string $format): self;

   
/**
     * Get the matrix representation of the QR code
     *
     * @return Matrix The matrix object representing the QR code
     * @throws \RuntimeException If no QR code has been generated yet
     */
   
public function getMatrix(): Matrix;

   
/**
     * Get the matrix as an array
     *
     * @return array The QR code matrix represented as a 2D array
     * @throws \RuntimeException If no QR code has been generated yet
     */
   
public function getMatrixAsArray(): array;

   
/**
     * Get the QR code as a string
     *
     * @return string The QR code as a string
     * @throws \RuntimeException If no QR code has been generated yet
     */
   
public function getString(): string;

   
/**
     * Get the QR code as a Data URI
     *
     * @return string The QR code as a Data URI
     * @throws \RuntimeException If no QR code has been generated yet
     */
   
public function getDataUri(): string;

   
/**
     * Save the generated QR code to a file
     *
     * @param string $path The path to save the QR code file
     * @return bool True if the file was saved successfully, false otherwise
     * @throws \InvalidArgumentException If the format is unsupported
     * @throws \RuntimeException If no QR code has been generated yet
     */
   
public function saveTo(string $path): bool;

   
/**
     * Set the data to be encoded in the QR code
     *
     * @param string $data The data to encode
     * @param DataType $type The type of the data (e.g., Email, Phone, WiFi, Location)
     * @return self
     * @throws \InvalidArgumentException If the data is empty or invalid
     */
   
public function setData(string $data, DataType $type): self;

   
/**
     * Set the size of the QR code
     *
     * @param int $size The size of the QR code
     * @return self
     * @throws \InvalidArgumentException If the size is not a positive integer
     */
   
public function setSize(int $size): self;

   
/**
     * Set the margin around the QR code
     *
     * @param int $margin The margin size
     * @return self
     * @throws \InvalidArgumentException If the margin is negative
     */
   
public function setMargin(int $margin): self;

   
/**
     * Set the round block size mode
     *
     * @param string $mode The round block size mode as a string.
     * @return self
     * @throws \InvalidArgumentException If the given mode is invalid.
     */
   
public function setBlockSizeMode(string $mode): self;

   
/**
     * Set the error correction level for the QR code
     *
     * @param string $level The error correction level as a string.
     * @return self
     * @throws \InvalidArgumentException If the given level is invalid.
     */
   
public function setErrorCorrectionLevel(string $level): self;

   
/**
     * Set the color of the QR code foreground
     *
     * @param string $hexColor The hexadecimal color code
     * @return self
     * @throws \InvalidArgumentException If the color format is invalid
     */
   
public function setColor(string $hexColor): self;

   
/**
     * Set the background color of the QR code
     *
     * @param string $hexColor The hexadecimal color code
     * @return self
     * @throws \InvalidArgumentException If the color format is invalid
     */
   
public function setBackgroundColor(string $hexColor): self;

   
/**
     * Set the logo to be embedded in the QR code
     *
     * @param string $logoPath The path to the logo file
     * @param int $logoSize The size of the logo
     * @return self
     * @throws \InvalidArgumentException If the logo file does not exist
     */
   
public function setLogo(string $logoPath, int $logoSize = 40): self;

   
/**
     * Set the label for the QR code
     *
     * @param string $label The label text
     * @param string $textAlign The text alignment (e.g., 'center', 'left')
     * @param string $textColor The text color in hex format
     * @param int $fontSize The font size of the label
     * @param array $margin The margin for the label [top, right, bottom, left]
     * @return self
     * @throws \InvalidArgumentException If the label is empty
     */
   
public function setLabel(
       
string $label,
       
string $textAlign = 'center',
       
string $textColor = '#000000',
       
int $fontSize = 20,
        array
$margin = [0, 10, 10, 10]
    ):
self;

   
/**
     * Set the encoding for the QR code
     *
     * @param string $encoding The encoding type
     * @return self
     */
   
public function setEncoding(string $encoding): self;
}