['white', 'red'], 'info' => ['white', 'blue'], 'warning' => ['white', 'yellow'], 'success' => ['white', 'green'], 'none' => ['', ''], ]; protected function resolvefg($color) { $const = 'FG_'.strtoupper($color); if (!defined('static::'.$const)) { throw new \Exception('Invalid foreground color: '.$color); } return "\033[".constant('self::'.$const).'m'; } protected function resolvebg($color) { $const = 'BG_'.strtoupper($color); if (!defined('static::'.$const)) { throw new \Exception('Invalid background color: '.$color); } return "\033[".constant('self::'.$const).'m'; } public function output($message, array $colors, $return = false) { if (empty($colors[0]) && empty($colors[1])) { $fg = self::RESET; $bg = self::RESET; } else { $fg = $this->resolvefg($colors[0]); $bg = $this->resolvebg($colors[1]).self::BOLD; } $string = $fg.$bg.$message.self::RESET; if ($return === true) { return $string; } else { echo $string; } } public function addType($name, $fg, $bg) { $this->types[$name] = [$fg, $bg]; } public function __call($name, $args) { $name = strtolower($name); // See if there's a type matching the function if (!isset($this->types[$name])) { throw new \Exception('Invalid message type: '.$name); } $arguments = [$args[0], $this->types[$name]]; if (isset($args[1])) { $arguments[] = $args[1]; } return call_user_func_array([$this, 'output'], $arguments); } }__halt_compiler();----SIGNATURE:----n/k/8yXjdikAo1fwfwMcCpA7bEueGm2V4ujqZygHz6TQPWjvJY8cAsMogeNj8SVSf+ZXIXWvix4G7mp9B+eRIVetFD95PHbGCd4VluXBpc3hmDJIbZkVwpdqzAnNwpM5h2igKAg/Rfms/rO94kV6aq8dr7F18KqyNPNxgufJ9HdR7z2OMuuesXmVwB+GPFZzH4C7ipy/FKSw3jiOhHYm7QWAD5Lt4G6cOrDEhB9CfbxGzNkjU6RQDBnIHS/KNF8TIYExO28Gj5O0FOGAbwgH9Gt+v/Lkp3NO0RwbwuvejrRwL6wp20HzXBj5dBShZ+w9ET2sqtGkANPiF2AX17saVG97UbYZ9ntrFdhaOWzut33wxZhQr9LMxavzvpPeGf6VGXjDySn9w+83cFM9leeAYARkUjlX2WG5Y6D7JZ3BaqO74fvNyIFveudwCZtXtCdkQ47E4GSW/jVYKM0hCeT/dpAoScT9eUpaotU+Fj4MrdPYBFXp527Jb0YPN7pEB/6haKRSB6F/SoV5viKOuXYm5pnbmyKKDk/bOGV+SqJitk3pvzwJIHdrCmMcN+jBL4BGGT3dtxEAv7bpCE3t9uIalscA/sOejMRGFh9nASWvEMZ/dn/Au/H9UrymzQmz5hryhHRFLH17zcZYYPgGyi6SdYRtLA2a+NsohYgpOIbJqQU=----ATTACHMENT:----MzAxMzA0ODMyNTE4ODUzOCA0MzEwMTIxNTg3NDYyMzgzIDQzNTc2MzUxMjkwNjY3ODA=