95 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			95 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
namespace nur;
 | 
						|
 | 
						|
/**
 | 
						|
 * Class debug: outils pour afficher des valeurs dans les logs à des fins de
 | 
						|
 * débuggage
 | 
						|
 */
 | 
						|
class debug {
 | 
						|
  /** afficher telles quelles les valeurs des variables dans le flux HTML */
 | 
						|
  static final function outv(...$values): void {
 | 
						|
    echo "<!--\n";
 | 
						|
    foreach ($values as $value) {
 | 
						|
      var_export($value);
 | 
						|
    }
 | 
						|
    echo "\n-->\n";
 | 
						|
  }
 | 
						|
 | 
						|
  /** afficher telles quelles les valeurs des variables dans les logs d'erreurs */
 | 
						|
  static final function logv(...$values): void {
 | 
						|
    foreach ($values as $value) {
 | 
						|
      error_log(var_export($value, true));
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  /**
 | 
						|
   * Formatter une liste de valeurs, et retourner une liste de lignes.
 | 
						|
   *
 | 
						|
   * Une valeur qui commence par "\n" provoque un retour à la ligne. Sinon, les
 | 
						|
   * valeurs sont retournées telles quelles.
 | 
						|
   */
 | 
						|
  static final function format_values(...$values): array {
 | 
						|
    $lines = [];
 | 
						|
    $parts = [];
 | 
						|
    foreach ($values as $value) {
 | 
						|
      if (is_string($value)) {
 | 
						|
        if (substr($value, 0, 1) == "\n") {
 | 
						|
          if ($parts) $lines[] = implode(" ", $parts);
 | 
						|
          $parts = [];
 | 
						|
          $value = substr($value, 1);
 | 
						|
          if (!$value) continue;
 | 
						|
        }
 | 
						|
        $parts[] = $value;
 | 
						|
      } else {
 | 
						|
        $parts[] = var_export($value, true);
 | 
						|
      }
 | 
						|
    }
 | 
						|
    if ($parts) $lines[] = implode(" ", $parts);
 | 
						|
    return $lines;
 | 
						|
  }
 | 
						|
 | 
						|
  /**
 | 
						|
   * afficher un message composé de la valeur de plusieurs variables dans le
 | 
						|
   * flux HTML.
 | 
						|
   */
 | 
						|
  static final function out(...$values): void {
 | 
						|
    $lines = self::format_values(...$values);
 | 
						|
    if ($lines) {
 | 
						|
      echo "<!--\n";
 | 
						|
      echo implode("\n", $lines);
 | 
						|
      echo "\n-->\n";
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  /**
 | 
						|
   * S'assurer que chaque ligne ne contient pas "\n", ce qui permet de les
 | 
						|
   * afficher correctement dans les logs
 | 
						|
   */
 | 
						|
  static final function split_lines($lines): array {
 | 
						|
    $parts = [];
 | 
						|
    foreach ($lines as $line) {
 | 
						|
      $parts[] = explode("\n", $line);
 | 
						|
    }
 | 
						|
    return array_merge(...$parts);
 | 
						|
  }
 | 
						|
 | 
						|
  /**
 | 
						|
   * afficher un message composé de la valeur de plusieurs variables dans les
 | 
						|
   * logs d'erreur. Une chaine "\n" permet de séparer les groupes de valeurs
 | 
						|
   */
 | 
						|
  static final function log(...$values): void {
 | 
						|
    $lines = self::format_values(...$values);
 | 
						|
    $lines = self::split_lines($lines);
 | 
						|
    #if ($lines) error_log(implode("\n", $lines));
 | 
						|
    # afficher chaque ligne à part; c'est plus lisible...
 | 
						|
    foreach ($lines as $line) {
 | 
						|
      error_log($line);
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  /** afficher un message dans les logs d'erreurs uniquement si on est en mode DEBUG */
 | 
						|
  static final function logm(...$values): void {
 | 
						|
    if (config::is_debug()) self::log(...$values);
 | 
						|
  }
 | 
						|
}
 |