57 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| namespace nur\b\io;
 | |
| 
 | |
| use nur\b\UserException;
 | |
| 
 | |
| /**
 | |
|  * Class IOException: exception lancée quand une erreur se produit lors d'une
 | |
|  * opération sur un flux ou sur un système de fichiers
 | |
|  */
 | |
| class IOException extends UserException {
 | |
|   static final function last_error(?string $prefix=null): ?self {
 | |
|     $error = error_get_last();
 | |
|     if ($error === null) return null;
 | |
|     $message = $error["message"];
 | |
|     if ($prefix) $message = "$prefix: $message";
 | |
|     return new static($message);
 | |
|   }
 | |
| 
 | |
|   static final function generic_error(?string $message=null): self {
 | |
|     if ($message === null) $message = "generic error";
 | |
|     return new static($message);
 | |
|   }
 | |
| 
 | |
|   static final function error(?string $prefix=null): self {
 | |
|     $exception = self::last_error($prefix);
 | |
|     if ($exception !== null) throw $exception;
 | |
|     else throw self::generic_error($prefix);
 | |
|   }
 | |
| 
 | |
|   static final function ensure_not_false($value, ?string $prefix=null) {
 | |
|     if ($value !== false) return $value;
 | |
|     else throw self::error($prefix);
 | |
|   }
 | |
| 
 | |
|   static final function already_closed(): self {
 | |
|     return new static("already closed");
 | |
|   }
 | |
| 
 | |
|   static final function ensure_open(bool $closed): void {
 | |
|     if ($closed) throw self::already_closed();
 | |
|   }
 | |
| 
 | |
|   static final function json_last_error(?string $prefix=null): ?self {
 | |
|     $json_last_error = json_last_error();
 | |
|     if ($json_last_error === JSON_ERROR_NONE) return null;
 | |
|     $message = json_last_error_msg()." ($json_last_error)";
 | |
|     if ($prefix) $message = "$prefix: $message";
 | |
|     return new static($message);
 | |
|   }
 | |
| 
 | |
|   static final function ensure_json_value($value, ?string $prefix=null) {
 | |
|     $exception = self::json_last_error($prefix);
 | |
|     if ($exception === null) return $value;
 | |
|     else throw $exception;
 | |
|   }
 | |
| }
 |