PHP - Clase ColorComponent para aplicar color a los echo o print

Estoy creando un proyecto de consola y gestión de crons desde 0. Funciona y la tengo en producción, como es habitual es código abierto que lo tengo en gihub.

Estuve investigando como aplicar un poco de color para diferenciar mejor las opciones en pantalla.
Ha quedado así:


Para poder darle algo de color he creado la clase ColorComponent.

A continuación explico su uso y un ejemplo

Ejemplo 1: Usando el método estático text

//importamos el componente //puedes copiar el contenido y pegarlo en cualquier clase que quieras puesto use App\Component\ColorComponent as Color; ... $title = " Title in magenta! "; $text = " It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of etraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum. "; echo Color::text($title, Color::MAGENTA); echo Color::text($text, Color::LIGHT_CYAN);

Resultado

Ejemplo 2: Instanciando el objeto

La intención de esta modalidad es poder apilar todo el texto en la instancia de modo que se pueda aplicar un color por cada palabra o frase.
Después de tener todo el texto configurado se puede obtener el string final con ->get()

use App\Component\ColorComponent as Color; (new Color()) ->add("\n\nwhite\n",Color::WHITE) ->add("red\n",Color::RED) ->add("green\n",Color::GREEN) ->add("yellow\n",Color::YELLOW) ->add("blue\n",Color::BLUE) ->add("magenta\n",Color::MAGENTA) ->add("cyan\n",Color::CYAN) ->add("dark gray\n",Color::DARK_GRAY) ->add("light gray\n",Color::LIGHT_GRAY) ->add("light red\n",Color::LIGHT_RED) ->add("light green\n",Color::LIGHT_GREEN) ->add("light yellow\n",Color::LIGHT_YELLOW) ->add("light blue\n",Color::LIGHT_BLUE) ->add("light magenta\n",Color::LIGHT_MAGENTA) ->add("light cyan\n",Color::LIGHT_CYAN) ->add("light white\n",Color::LIGHT_WHITE) ->add("background\n",42) ->print("\t");

Resultado


El código fuente anterior lo puedes encontrar aquí

Autor: Eduardo A. F.
Publicado: 02-01-2021 18:13
Actualizado: 02-01-2021 18:31