| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 | <?phpdeclare(strict_types = 1);namespace BaconQrCode\Common;use BaconQrCode\Exception\OutOfBoundsException;use DASPRiD\Enum\AbstractEnum;/** * Enum representing the four error correction levels. * * @method static self L() ~7% correction * @method static self M() ~15% correction * @method static self Q() ~25% correction * @method static self H() ~30% correction */final class ErrorCorrectionLevel extends AbstractEnum{    protected const L = [0x01];    protected const M = [0x00];    protected const Q = [0x03];    protected const H = [0x02];    /**     * @var int     */    private $bits;    protected function __construct(int $bits)    {        $this->bits = $bits;    }    /**     * @throws OutOfBoundsException if number of bits is invalid     */    public static function forBits(int $bits) : self    {        switch ($bits) {            case 0:                return self::M();            case 1:                return self::L();            case 2:                return self::H();            case 3:                return self::Q();        }        throw new OutOfBoundsException('Invalid number of bits');    }    /**     * Returns the two bits used to encode this error correction level.     */    public function getBits() : int    {        return $this->bits;    }}
 |