public static function color(string $text, string $foreground, string $background = null, string $format = null): string
	{
		if (static::isWindows() && ! isset($_SERVER['ANSICON']))
		{
			// @codeCoverageIgnoreStart
			return $text;
			// @codeCoverageIgnoreEnd
		}

		if (! array_key_exists($foreground, static::$foreground_colors))
		{
			throw CLIException::forInvalidColor('foreground', $foreground);
		}

		if ($background !== null && ! array_key_exists($background, static::$background_colors))
		{
			throw CLIException::forInvalidColor('background', $background);
		}

		$string = "\033[" . static::$foreground_colors[$foreground] . 'm';

		if ($background !== null)
		{
			$string .= "\033[" . static::$background_colors[$background] . 'm';
		}

		if ($format === 'underline')
		{
			$string .= "\033[4m";
		}

		$string .= $text . "\033[0m";

		return $string;
	}
public static function color(string $text, string $foreground, string $background = null, string $format = null): string
	{
		if (static::isWindows() && ! isset($_SERVER['ANSICON']))
		{
			// @codeCoverageIgnoreStart
			return $text;
			// @codeCoverageIgnoreEnd
		}

		if (! array_key_exists($foreground, static::$foreground_colors))
		{
			throw CLIException::forInvalidColor('foreground', $foreground);
		}

		if ($background !== null && ! array_key_exists($background, static::$background_colors))
		{
			throw CLIException::forInvalidColor('background', $background);
		}

		$string = "\033[" . static::$foreground_colors[$foreground] . 'm';

		if ($background !== null)
		{
			$string .= "\033[" . static::$background_colors[$background] . 'm';
		}

		if ($format === 'underline')
		{
			$string .= "\033[4m";
		}

		$string .= $text . "\033[0m";

		return $string;
	}
public static function color ( string $ text , string $ foreground , string $ background = null , string $ format = null ) : string { if ( static :: isWindows ( ) && ! isset ( $ _SERVER [ 'ANSICON' ] ) ) { // @codeCoverageIgnoreStart return $ text ; // @codeCoverageIgnoreEnd } if ( ! array_key_exists ( $ foreground , static :: $ foreground_colors ) ) { throw CLIException :: forInvalidColor ( 'foreground' , $ foreground ) ; } if ( $ background !== null && ! array_key_exists ( $ background , static :: $ background_colors ) ) { throw CLIException :: forInvalidColor ( 'background' , $ background ) ; } $ string = "\033[" . static :: $ foreground_colors [ $ foreground ] . 'm' ; if ( $ background !== null ) { $ string .= "\033[" . static :: $ background_colors [ $ background ] . 'm' ; } if ( $ format === 'underline' ) { $ string .= "\033[4m" ; } $ string .= $ text . "\033[0m" ; return $ string ; }
Returns the given text with the correct color codes for a foreground and
optionally a background color.

@param string $text       The text to color
@param string $foreground The foreground color
@param string $background The background color
@param string $format     Other formatting to apply. Currently only 'underline' is understood

@return string    The color coded string
Returns the given text with the correct color codes for a foreground and optionally a background color .