'; } } public static function dump($var, $label = 'Dump', $echo = true) { // Start output buffering ob_start(); echo "
";
        echo "" . $label . ": ";

        // Convert array or object to string
        if (is_array($var)) {
            print_r($var);
        } elseif (is_object($var)) {
            echo self::objectToString($var);
        } else {
            var_dump($var);
        }

        echo "
"; // Get the contents of the buffer $output = ob_get_clean(); // If echo is true, print the output if ($echo) { echo $output; } else { return $output; } } public static function objectToString($object, $_tab = NULL) { ob_start(); $tab = "    " . $_tab; echo "Object (" . get_class($object) . ")\n"; echo $_tab . "{\n"; foreach (get_object_vars($object) as $property => $value) { echo $tab . "[$property] => "; if (is_array($value)) { echo self::arrayToString($value, $tab); } elseif (is_object($value)) { echo self::objectToString($value, $tab); } else { echo "" . var_export($value, true) . "\n"; } } echo $_tab . "}\n"; return ob_get_clean(); } public static function arrayToString($array, $_tab = NULL) { ob_start(); $tab = "    ".$_tab; echo "Array\n"; echo $_tab . "(\n"; foreach ($array as $key => $value) { echo $tab . "[$key] => "; if (is_array($value)) { echo self::arrayToString($value, $tab); } elseif (is_object($value)) { echo self::objectToString($value, $tab); } else { echo "" . var_export($value, true) . "\n"; } } echo $_tab . ")\n"; return ob_get_clean(); } private static function variableToString($var, $label) { ob_start(); echo "$label: "; if (is_array($var) || is_object($var)) { print_r($var); } else { var_dump($var); } return ob_get_clean(); } public static function getTraces(){ $return = "Trace : "; // Obtenir la trace d'exécution $backtrace = debug_backtrace(); $nb = count($backtrace)-1; for ($i=$nb; $i > 0; $i--) { $return .= ($i != 0) ? "[".$backtrace[$i]["function"]."] " : NULL; $return .= str_replace(DOCUMENT_ROOT, '', $backtrace[$i]["file"]).":".$backtrace[$i]["line"]; $return .= ($i != 1) ? " >> " : NULL; } return $return; } public static function print_r(?array $_array = NULL, ?int $_exit = NULL) { echo "
".debug::getTraces() . "
"; if(empty($_array)){ echo "
EMPTY
"; } else { echo "
";
            print_r($_array);
            echo "
"; } ($_exit != NULL) ? exit() : NULL; } public static function isHtml(string $_string) : bool { $stripped_string = strip_tags($_string); return $_string !== $stripped_string; } public static function generateHtmlContent($htmlContent) { $id = md5(microtime()); return << Exécution de HTML HTML; } public static function log($_message, $_mark = NULL) { $mark = "
"; $mark .= ($_mark != NULL) ? "
". $_mark . "
" : NULL; $mark .= self::getTraces(); $mark .= "
"; if($_message != NULL) { if(is_array($_message)){ self::$logs[] = ["data" => $mark ."
" . self::arrayToString($_message) . "
", "nl2br" => TRUE]; } elseif(is_object($_message)){ self::$logs[] = ["data" => $mark ."
" . self::objectToString($_message) . "
", "nl2br" => TRUE]; } elseif(self::isHtml($_message)){ self::$logs[] = ["data" => $mark ."
" . self::generateHtmlContent($_message) . "
", "nl2br" => FALSE]; } elseif($mark != NULL){ self::$logs[] = ["data" => $mark ."
" . $_message . "
", "nl2br" => TRUE]; } else { self::$logs[] = ["data" => $_message, "nl2br" => TRUE]; } } } public static function logSession($_message, $_mark = NULL) { $mark = "
"; $mark .= ($_mark != NULL) ? "
". $_mark . "
" : NULL; $mark .= self::getTraces(); $mark .= "
"; if($_message != NULL) { if(is_array($_message)){ self::setSession(["data" => $mark ."
" . self::arrayToString($_message) . "
", "nl2br" => TRUE]); } elseif(is_object($_message)){ self::setSession(["data" => $mark ."
" . self::objectToString($_message) . "
", "nl2br" => TRUE]); } elseif(self::isHtml($_message)){ self::setSession(["data" => $mark ."
" . self::generateHtmlContent($_message) . "
", "nl2br" => false]); } elseif($mark != NULL){ self::setSession(["data" => $mark ."
" . $_message . "
", "nl2br" => TRUE]); } else { self::setSession(["data" => $_message, "nl2br" => TRUE]); } } } public static function renderLogs() { echo "
"; echo "
"; echo "PHP ". phpversion() . " | MYSQL " . db::version() . " | " . number_format(self::$closeTime, 4) . " secondes "; echo "
"; echo "
"; foreach (self::$logs as $log) { if($log != NULL){ echo "
"; echo $log["nl2br"] == TRUE ? nl2br($log["data"]) : $log["data"]; echo "
"; } } if(self::ifSession()){ foreach (self::getSession() as $logSession) { echo "
"; echo $logSession["nl2br"] == TRUE ? nl2br($logSession["data"]) : $logSession["data"]; echo "
"; } } echo "
"; get::javascript("debug"); } public static function init() { // Register shutdown function to render logs at the end of the script execution register_shutdown_function(function () { self::renderLogs(); }); } public static function startTimer() { self::$startTime = microtime(true); } public static function endTimer() { self::$closeTime = microtime(true) - self::$startTime; } public static function getBadge(string $_link,string $_label){ return ''. $_label .''; } public static function printEnvironnement(){ echo (ENVIRONNEMENT != "PROD") ? " [" . ENVIRONNEMENT . "]" : NULL; } private static function buildBadge(array $_data){ $color = empty($_data["color"]) ? "black" : $_data["color"]; $backgroundColor = empty($_data["background-color"]) ? "orangered" : $_data["background-color"]; $class = empty($_data["class"]) ? NULL : $_data["class"]; $link = empty($_data["link"]) ? "#" : $_data["link"]; $txt = empty($_data["txt"]) ? NULL : $_data["txt"]; $icon = empty($_data["icon"]) ? NULL : " "; return "" . $icon . $txt . ""; } public static function getBadges(){ $return = ""; if(debug::isFile("maintenance")){ $return .= self::buildBadge([ "icon" => "bi bi-exclamation-diamond-fill", "link" => "/parametres.html#parametres-debug", "background-color" => "red", "color" => "white", "txt" => "MODE MAINTENANCE" ]); } if(debug::isFile("debug")){ $return .= self::buildBadge([ "icon" => "bi bi-bug-fill", "class" => "toggle-logs", "link" => "#", "background-color" => "orangered", "color" => "white", "txt" => "MODE DEBUG" ]); } if(self::isFile("sql")){ $return .= self::buildBadge([ "icon" => "bi bi-database-fill", "class" => "toggle-logs", "link" => "#", "background-color" => "orange", "color" => "black", "txt" => "DEBUG SQL" ]); } if(self::isFile("email")){ $return .= self::buildBadge([ "icon" => "bi bi-envelope-fill", "class" => "toggle-logs", "link" => "#", "background-color" => "orange", "color" => "black", "txt" => "DEBUG EMAIL" ]); } if(self::isFile("send-email")){ $return .= self::buildBadge([ "icon" => "bi bi-envelope-fill", "class" => "toggle-logs", "link" => "#", "background-color" => "orange", "color" => "black", "txt" => "DEBUG SEND EMAIL" ]); } if(self::isFile("submit")){ $return .= self::buildBadge([ "icon" => "bi bi-send-fill", "class" => "toggle-logs", "link" => "#", "background-color" => "orange", "color" => "black", "txt" => "DEBUG SUBMIT" ]); } return $return; } public static function setSession($_data){ $_SESSION["DEBUG"][] = $_data; } public static function getSession(){ $return = $_SESSION["DEBUG"]; self::resetSession(); return $return; } public static function ifSession(){ return empty($_SESSION["DEBUG"]) ? FALSE : TRUE; } public static function resetSession(){ unset($_SESSION["DEBUG"]); } }