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);
 | |
|   }
 | |
| }
 |