public static function hslToRgb($h, $s, $l)
    {
        if (\min($h, $s, $l) < 0) {
            throw new InvalidArgumentException('The parameters for hslToRgb should be no less than 0');
        }

        if ($h > 360 || \max($s, $l) > 100) {
            throw new InvalidArgumentException('The parameters for hslToRgb should be no more than 360, 100, and 100 respectively');
        }

        $h /= 360;
        $s /= 100;
        $l /= 100;

        $m2 = ($l <= 0.5) ? $l * ($s + 1) : $l + $s - $l * $s;
        $m1 = $l * 2 - $m2;

        return array(
            (int) \round(self::hueToRgb($m1, $m2, $h + 1 / 3) * 0xFF),
            (int) \round(self::hueToRgb($m1, $m2, $h) * 0xFF),
            (int) \round(self::hueToRgb($m1, $m2, $h - 1 / 3) * 0xFF),
        );
    }
public static function hslToRgb($h, $s, $l)
    {
        if (\min($h, $s, $l) < 0) {
            throw new InvalidArgumentException('The parameters for hslToRgb should be no less than 0');
        }

        if ($h > 360 || \max($s, $l) > 100) {
            throw new InvalidArgumentException('The parameters for hslToRgb should be no more than 360, 100, and 100 respectively');
        }

        $h /= 360;
        $s /= 100;
        $l /= 100;

        $m2 = ($l <= 0.5) ? $l * ($s + 1) : $l + $s - $l * $s;
        $m1 = $l * 2 - $m2;

        return array(
            (int) \round(self::hueToRgb($m1, $m2, $h + 1 / 3) * 0xFF),
            (int) \round(self::hueToRgb($m1, $m2, $h) * 0xFF),
            (int) \round(self::hueToRgb($m1, $m2, $h - 1 / 3) * 0xFF),
        );
    }
public static function hslToRgb ( $ h , $ s , $ l ) { if ( \ min ( $ h , $ s , $ l ) < 0 ) { throw new InvalidArgumentException ( 'The parameters for hslToRgb should be no less than 0' ) ; } if ( $ h > 360 || \ max ( $ s , $ l ) > 100 ) { throw new InvalidArgumentException ( 'The parameters for hslToRgb should be no more than 360, 100, and 100 respectively' ) ; } $ h /= 360 ; $ s /= 100 ; $ l /= 100 ; $ m2 = ( $ l <= 0.5 ) ? $ l * ( $ s + 1 ) : $ l + $ s - $ l * $ s ; $ m1 = $ l * 2 - $ m2 ; return array ( ( int ) \ round ( self :: hueToRgb ( $ m1 , $ m2 , $ h + 1 / 3 ) * 0xFF ) , ( int ) \ round ( self :: hueToRgb ( $ m1 , $ m2 , $ h ) * 0xFF ) , ( int ) \ round ( self :: hueToRgb ( $ m1 , $ m2 , $ h - 1 / 3 ) * 0xFF ) , ) ; }
Turns HSL color to RGB. Black magic.

@param float $h Hue
@param float $s Saturation
@param float $l Lightness

@return int[] RGB array
Turns HSL color to RGB . Black magic .