';
}
}
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, int $_exit = NULL)
{
echo "".debug::getTraces() . "
";
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 "
";
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"]);
}
}