classes outils v*
This commit is contained in:
		
							parent
							
								
									db89ff2abe
								
							
						
					
					
						commit
						948b94c5cd
					
				
							
								
								
									
										14
									
								
								src/php/types/varray.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								src/php/types/varray.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,14 @@ | ||||
| <?php | ||||
| namespace nulib\php\types; | ||||
| 
 | ||||
| use nulib\cl; | ||||
| 
 | ||||
| class varray { | ||||
|   static function ensure_array(&$array): void { | ||||
|     if (!is_array($array)) $array = cl::with($array); | ||||
|   } | ||||
| 
 | ||||
|   static function ensure_narray(&$array): void { | ||||
|     if ($array !== null) varray::ensure_array($array); | ||||
|   } | ||||
| } | ||||
							
								
								
									
										46
									
								
								src/php/types/vbool.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								src/php/types/vbool.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,46 @@ | ||||
| <?php | ||||
| namespace nulib\php\types; | ||||
| 
 | ||||
| use nulib\schema\types\tbool; | ||||
| 
 | ||||
| class vbool { | ||||
|   /** liste de valeurs chaines à considérer comme 'OUI' */ | ||||
|   public const YES_VALUES = [ | ||||
|     "true", "vrai", "yes", "oui", | ||||
|     "t", "v", "y", "o", "1", | ||||
|   ]; | ||||
|   /** liste de valeurs chaines à considérer comme 'NON' */ | ||||
|   public const NO_VALUES = [ | ||||
|     "false", "faux", "non", "no", | ||||
|     "f", "n", "0", | ||||
|   ]; | ||||
| 
 | ||||
|   /** Vérifier si $value est 'OUI' */ | ||||
|   static final function is_yes(?string $value): bool { | ||||
|     if ($value === null) return false; | ||||
|     $value = strtolower(trim($value)); | ||||
|     if (in_array($value, self::YES_VALUES, true)) return true; | ||||
|     // n'importe quelle valeur numérique
 | ||||
|     if (is_numeric($value)) return $value != 0; | ||||
|     return false; | ||||
|   } | ||||
| 
 | ||||
|   /** Vérifier si $value est 'NON' */ | ||||
|   static final function is_no(?string $value): bool { | ||||
|     if ($value === null) return true; | ||||
|     $value = strtolower(trim($value)); | ||||
|     return in_array($value, self::NO_VALUES, true); | ||||
|   } | ||||
| 
 | ||||
|   static function ensure_bool(&$bool): void { | ||||
|     if (is_string($bool)) { | ||||
|       if (self::is_yes($bool)) $bool = true; | ||||
|       elseif (self::is_no($bool)) $bool = false; | ||||
|     } | ||||
|     if (!is_bool($bool)) $bool = boolval($bool); | ||||
|   } | ||||
| 
 | ||||
|   static function ensure_nbool(&$bool): void { | ||||
|     if ($bool !== null) self::ensure_bool($bool); | ||||
|   } | ||||
| } | ||||
							
								
								
									
										13
									
								
								src/php/types/vcontent.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								src/php/types/vcontent.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,13 @@ | ||||
| <?php | ||||
| namespace nulib\php\types; | ||||
| 
 | ||||
| class vcontent { | ||||
|   static function ensure_content(&$content): void { | ||||
|     if ($content === null || $content === false) $content = []; | ||||
|     elseif (!is_string($content) && !is_array($content)) $content = strval($content); | ||||
|   } | ||||
| 
 | ||||
|   static function ensure_ncontent(&$content): void { | ||||
|     if ($content !== null) self::ensure_content($content); | ||||
|   } | ||||
| } | ||||
							
								
								
									
										12
									
								
								src/php/types/vfloat.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								src/php/types/vfloat.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,12 @@ | ||||
| <?php | ||||
| namespace nulib\php\types; | ||||
| 
 | ||||
| class vfloat { | ||||
|   static function ensure_float(&$float): void { | ||||
|     if (!is_float($float)) $float = floatval($float); | ||||
|   } | ||||
| 
 | ||||
|   static function ensure_nfloat(&$float): void { | ||||
|     if ($float !== null) self::ensure_float($float); | ||||
|   } | ||||
| } | ||||
							
								
								
									
										14
									
								
								src/php/types/vfunc.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								src/php/types/vfunc.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,14 @@ | ||||
| <?php | ||||
| namespace nulib\php\types; | ||||
| 
 | ||||
| use nulib\php\func; | ||||
| 
 | ||||
| class vfunc { | ||||
|   static function ensure_func(&$func): void { | ||||
|     $func = func::ensure($func); | ||||
|   } | ||||
| 
 | ||||
|   static function ensure_nfunc(&$func): void { | ||||
|     if ($func !== null) self::ensure_func($func); | ||||
|   } | ||||
| } | ||||
							
								
								
									
										12
									
								
								src/php/types/vint.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								src/php/types/vint.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,12 @@ | ||||
| <?php | ||||
| namespace nulib\php\types; | ||||
| 
 | ||||
| class vint { | ||||
|   static function ensure_int(&$int): void { | ||||
|     if (!is_int($int)) $int = intval($int); | ||||
|   } | ||||
| 
 | ||||
|   static function ensure_nint(&$int): void { | ||||
|     if ($int !== null) self::ensure_int($int); | ||||
|   } | ||||
| } | ||||
							
								
								
									
										14
									
								
								src/php/types/vkey.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								src/php/types/vkey.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,14 @@ | ||||
| <?php | ||||
| namespace nulib\php\types; | ||||
| 
 | ||||
| class vkey { | ||||
|   static function ensure_key(&$key): void { | ||||
|     if ($key === null) $key = ""; | ||||
|     elseif ($key === false) $key = 0; | ||||
|     elseif (!is_string($key) && !is_int($key)) $key = strval($key); | ||||
|   } | ||||
| 
 | ||||
|   static function ensure_nkey(&$key): void { | ||||
|     if ($key !== null) self::ensure_key($key); | ||||
|   } | ||||
| } | ||||
							
								
								
									
										20
									
								
								src/php/types/vpkey.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								src/php/types/vpkey.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,20 @@ | ||||
| <?php | ||||
| namespace nulib\php\types; | ||||
| 
 | ||||
| class vpkey { | ||||
|   static function ensure_pkey(&$pkey): void { | ||||
|     if ($pkey === null) $pkey = ""; | ||||
|     elseif ($pkey === false) $pkey = 0; | ||||
|     elseif (!is_string($pkey) && !is_int($pkey) && !is_array($pkey)) $pkey = strval($pkey); | ||||
|     if (is_array($pkey)) { | ||||
|       foreach ($pkey as &$key) { | ||||
|         vkey::ensure_key($key); | ||||
|       }; | ||||
|       unset($key); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   static function ensure_npkey(&$pkey): void { | ||||
|     if ($pkey !== null) self::ensure_pkey($pkey); | ||||
|   } | ||||
| } | ||||
							
								
								
									
										21
									
								
								src/php/types/vrawstring.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								src/php/types/vrawstring.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,21 @@ | ||||
| <?php | ||||
| namespace nulib\php\types; | ||||
| 
 | ||||
| use nulib\str; | ||||
| 
 | ||||
| class vrawstring { | ||||
|   /** @var bool faut-il trimmer la valeur */ | ||||
|   const TRIM = false; | ||||
|   /** @var bool faut-il normaliser les caractères fin de ligne */ | ||||
|   const NORM_NL = false; | ||||
| 
 | ||||
|   static function ensure_string(&$string): void { | ||||
|     if (!is_string($string)) $string = strval($string); | ||||
|     if (static::TRIM) $string = trim($string); | ||||
|     if (static::NORM_NL) $string = str::norm_nl($string); | ||||
|   } | ||||
| 
 | ||||
|   static function ensure_nstring(&$string): void { | ||||
|     if ($string !== null) self::ensure_string($string); | ||||
|   } | ||||
| } | ||||
							
								
								
									
										6
									
								
								src/php/types/vstring.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								src/php/types/vstring.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,6 @@ | ||||
| <?php | ||||
| namespace nulib\php\types; | ||||
| 
 | ||||
| class vstring extends vrawstring { | ||||
|   const TRIM = true; | ||||
| } | ||||
							
								
								
									
										8
									
								
								src/php/types/vtext.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								src/php/types/vtext.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,8 @@ | ||||
| <?php | ||||
| namespace nulib\php\types; | ||||
| 
 | ||||
| class vtext extends vrawstring { | ||||
|   const TRIM = true; | ||||
| 
 | ||||
|   const NORM_NL = true; | ||||
| } | ||||
| @ -4,6 +4,11 @@ namespace nulib\schema; | ||||
| use ArrayAccess; | ||||
| use nulib\AccessException; | ||||
| use nulib\cl; | ||||
| use nulib\php\types\varray; | ||||
| use nulib\php\types\vbool; | ||||
| use nulib\php\types\vcontent; | ||||
| use nulib\php\types\vfunc; | ||||
| use nulib\php\types\vpkey; | ||||
| use nulib\ref\schema\ref_schema; | ||||
| use nulib\ref\schema\ref_types; | ||||
| use nulib\schema\_assoc\AssocSchema; | ||||
| @ -177,7 +182,7 @@ abstract class Schema implements ArrayAccess { | ||||
|     $definition["nullable"] = $nullable; | ||||
|     # nature
 | ||||
|     $nature = $definition[""]; | ||||
|     tarray::ensure_array($nature); | ||||
|     varray::ensure_array($nature); | ||||
|     $natureMetaschema ??= ref_schema::NATURE_METASCHEMA; | ||||
|     foreach (array_keys($natureMetaschema) as $key) { | ||||
|       if (!array_key_exists($key, $nature)) { | ||||
| @ -191,7 +196,7 @@ abstract class Schema implements ArrayAccess { | ||||
|     $header = $definition["header"]; | ||||
|     if ($name === null) $name = $definitionKey; | ||||
|     trawstring::ensure_nstring($name); | ||||
|     tpkey::ensure_npkey($pkey); | ||||
|     vpkey::ensure_npkey($pkey); | ||||
|     trawstring::ensure_nstring($header); | ||||
|     if ($pkey === null) $pkey = $name; | ||||
|     if ($header === null) $header = $name; | ||||
| @ -199,18 +204,18 @@ abstract class Schema implements ArrayAccess { | ||||
|     $definition["pkey"] = $pkey; | ||||
|     $definition["header"] = $header; | ||||
|     # autres éléments
 | ||||
|     tarray::ensure_narray($definition["schema"]); | ||||
|     varray::ensure_narray($definition["schema"]); | ||||
|     trawstring::ensure_nstring($definition["title"]); | ||||
|     tbool::ensure_bool($definition["required"]); | ||||
|     tbool::ensure_bool($definition["nullable"]); | ||||
|     tcontent::ensure_ncontent($definition["desc"]); | ||||
|     tfunc::ensure_nfunc($definition["analyzer_func"]); | ||||
|     tfunc::ensure_nfunc($definition["extractor_func"]); | ||||
|     tfunc::ensure_nfunc($definition["parser_func"]); | ||||
|     tfunc::ensure_nfunc($definition["normalizer_func"]); | ||||
|     tarray::ensure_narray($definition["messages"]); | ||||
|     tfunc::ensure_nfunc($definition["formatter_func"]); | ||||
|     tbool::ensure_nbool($definition["computed"]); | ||||
|     vbool::ensure_bool($definition["required"]); | ||||
|     vbool::ensure_bool($definition["nullable"]); | ||||
|     vcontent::ensure_ncontent($definition["desc"]); | ||||
|     vfunc::ensure_nfunc($definition["analyzer_func"]); | ||||
|     vfunc::ensure_nfunc($definition["extractor_func"]); | ||||
|     vfunc::ensure_nfunc($definition["parser_func"]); | ||||
|     vfunc::ensure_nfunc($definition["normalizer_func"]); | ||||
|     varray::ensure_narray($definition["messages"]); | ||||
|     vfunc::ensure_nfunc($definition["formatter_func"]); | ||||
|     vbool::ensure_nbool($definition["computed"]); | ||||
| 
 | ||||
|     switch ($nature[0] ?? null) { | ||||
|     case "assoc": | ||||
|  | ||||
| @ -47,14 +47,6 @@ class tarray extends _tstring { | ||||
|     return $params; | ||||
|   } | ||||
| 
 | ||||
|   static function ensure_array(&$array): void { | ||||
|     if (!is_array($array)) $array = cl::with($array); | ||||
|   } | ||||
| 
 | ||||
|   static function ensure_narray(&$array): void { | ||||
|     if ($array !== null) self::ensure_array($array); | ||||
|   } | ||||
| 
 | ||||
|   function getClass(): string { | ||||
|     return "array"; | ||||
|   } | ||||
|  | ||||
| @ -2,6 +2,7 @@ | ||||
| namespace nulib\schema\types; | ||||
| 
 | ||||
| use nulib\cl; | ||||
| use nulib\php\types\vbool; | ||||
| use nulib\schema\_scalar\ScalarSchema; | ||||
| use nulib\schema\input\Input; | ||||
| use nulib\schema\Result; | ||||
| @ -14,47 +15,6 @@ class tbool extends _tformatable { | ||||
| 
 | ||||
|   const ALIASES = ["boolean"]; | ||||
| 
 | ||||
|   /** liste de valeurs chaines à considérer comme 'OUI' */ | ||||
|   const YES_VALUES = [ | ||||
|     "true", "vrai", "yes", "oui", | ||||
|     "t", "v", "y", "o", "1", | ||||
|   ]; | ||||
| 
 | ||||
|   /** liste de valeurs chaines à considérer comme 'NON' */ | ||||
|   const NO_VALUES = [ | ||||
|     "false", "faux", "non", "no", | ||||
|     "f", "n", "0", | ||||
|   ]; | ||||
| 
 | ||||
|   /** Vérifier si $value est 'OUI' */ | ||||
|   static final function is_yes(?string $value): bool { | ||||
|     if ($value === null) return false; | ||||
|     $value = strtolower(trim($value)); | ||||
|     if (in_array($value, self::YES_VALUES, true)) return true; | ||||
|     // n'importe quelle valeur numérique
 | ||||
|     if (is_numeric($value)) return $value != 0; | ||||
|     return false; | ||||
|   } | ||||
| 
 | ||||
|   /** Vérifier si $value est 'NON' */ | ||||
|   static final function is_no(?string $value): bool { | ||||
|     if ($value === null) return true; | ||||
|     $value = strtolower(trim($value)); | ||||
|     return in_array($value, self::NO_VALUES, true); | ||||
|   } | ||||
| 
 | ||||
|   static function ensure_bool(&$bool): void { | ||||
|     if (is_string($bool)) { | ||||
|       if (self::is_yes($bool)) $bool = true; | ||||
|       elseif (self::is_no($bool)) $bool = false; | ||||
|     } | ||||
|     if (!is_bool($bool)) $bool = boolval($bool); | ||||
|   } | ||||
| 
 | ||||
|   static function ensure_nbool(&$bool): void { | ||||
|     if ($bool !== null) self::ensure_bool($bool); | ||||
|   } | ||||
| 
 | ||||
|   function getClass(): string { | ||||
|     return "bool"; | ||||
|   } | ||||
| @ -92,8 +52,8 @@ class tbool extends _tformatable { | ||||
|   } | ||||
| 
 | ||||
|   function parse(string $value) { | ||||
|     if (self::is_yes($value)) return true; | ||||
|     elseif (self::is_no($value)) return false; | ||||
|     if (vbool::is_yes($value)) return true; | ||||
|     elseif (vbool::is_no($value)) return false; | ||||
|     throw new ValueException("une valeur booléenne est attendue"); | ||||
|   } | ||||
| 
 | ||||
|  | ||||
| @ -9,15 +9,6 @@ use nulib\schema\Schema; | ||||
| abstract class tcontent extends _tunion { | ||||
|   const NAME = "content"; | ||||
| 
 | ||||
|   static function ensure_content(&$content): void { | ||||
|     if ($content === null || $content === false) $content = []; | ||||
|     elseif (!is_string($content) && !is_array($content)) $content = strval($content); | ||||
|   } | ||||
| 
 | ||||
|   static function ensure_ncontent(&$content): void { | ||||
|     if ($content !== null) self::ensure_content($content); | ||||
|   } | ||||
| 
 | ||||
|   function getClass(): string { | ||||
|     return "string|array"; | ||||
|   } | ||||
|  | ||||
| @ -11,14 +11,6 @@ class tfloat extends _tformatable { | ||||
| 
 | ||||
|   const ALIASES = ["flt", "double", "dbl"]; | ||||
| 
 | ||||
|   static function ensure_float(&$float): void { | ||||
|     if (!is_float($float)) $float = floatval($float); | ||||
|   } | ||||
| 
 | ||||
|   static function ensure_nfloat(&$float): void { | ||||
|     if ($float !== null) self::ensure_float($float); | ||||
|   } | ||||
| 
 | ||||
|   function getClass(): string { | ||||
|     return "float"; | ||||
|   } | ||||
|  | ||||
| @ -13,14 +13,6 @@ class tfunc extends _tsimple { | ||||
| 
 | ||||
|   const ALIASES = ["function", "callable"]; | ||||
| 
 | ||||
|   static function ensure_func(&$func): void { | ||||
|     $func = func::ensure($func); | ||||
|   } | ||||
| 
 | ||||
|   static function ensure_nfunc(&$func): void { | ||||
|     if ($func !== null) self::ensure_func($func); | ||||
|   } | ||||
| 
 | ||||
|   function getClass(): string { | ||||
|     return func::class; | ||||
|   } | ||||
|  | ||||
| @ -11,14 +11,6 @@ class tint extends _tformatable { | ||||
| 
 | ||||
|   const ALIASES = ["integer"]; | ||||
| 
 | ||||
|   static function ensure_int(&$int): void { | ||||
|     if (!is_int($int)) $int = intval($int); | ||||
|   } | ||||
| 
 | ||||
|   static function ensure_nint(&$int): void { | ||||
|     if ($int !== null) self::ensure_int($int); | ||||
|   } | ||||
| 
 | ||||
|   //const INT_PATTERN = '/^[-+]?[0-9]+(?:\.[0-9]*)?$/';
 | ||||
| 
 | ||||
|   function getClass(): string { | ||||
|  | ||||
| @ -8,16 +8,6 @@ use nulib\schema\Schema; | ||||
| class tkey extends _tunion { | ||||
|   const NAME = "key"; | ||||
| 
 | ||||
|   static function ensure_key(&$key): void { | ||||
|     if ($key === null) $key = ""; | ||||
|     elseif ($key === false) $key = 0; | ||||
|     elseif (!is_string($key) && !is_int($key)) $key = strval($key); | ||||
|   } | ||||
| 
 | ||||
|   static function ensure_nkey(&$key): void { | ||||
|     if ($key !== null) self::ensure_key($key); | ||||
|   } | ||||
| 
 | ||||
|   function getClass(): string { | ||||
|     return "string|int"; | ||||
|   } | ||||
|  | ||||
| @ -1,6 +1,7 @@ | ||||
| <?php | ||||
| namespace nulib\schema\types; | ||||
| 
 | ||||
| use nulib\php\types\vkey; | ||||
| use nulib\schema\_scalar\ScalarSchema; | ||||
| use nulib\schema\Result; | ||||
| use nulib\schema\Schema; | ||||
| @ -8,21 +9,6 @@ use nulib\schema\Schema; | ||||
| class tpkey extends _tunion { | ||||
|   const NAME = "pkey"; | ||||
| 
 | ||||
|   static function ensure_pkey(&$pkey): void { | ||||
|     if ($pkey === null) $pkey = ""; | ||||
|     elseif ($pkey === false) $pkey = 0; | ||||
|     elseif (!is_string($pkey) && !is_int($pkey) && !is_array($pkey)) $pkey = strval($pkey); | ||||
|     if (is_array($pkey)) { | ||||
|       foreach ($pkey as &$key) { | ||||
|         tkey::ensure_key($key); | ||||
|       }; unset($key); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   static function ensure_npkey(&$pkey): void { | ||||
|     if ($pkey !== null) self::ensure_pkey($pkey); | ||||
|   } | ||||
| 
 | ||||
|   function getClass(): string { | ||||
|     return "string|int|array"; | ||||
|   } | ||||
|  | ||||
| @ -9,16 +9,6 @@ use nulib\str; | ||||
| class trawstring extends _tstring { | ||||
|   const NAME = "rawstring"; | ||||
| 
 | ||||
|   static function ensure_string(&$string): void { | ||||
|     if (!is_string($string)) $string = strval($string); | ||||
|     if (static::TRIM) $string = trim($string); | ||||
|     if (static::NORM_NL) $string = str::norm_nl($string); | ||||
|   } | ||||
| 
 | ||||
|   static function ensure_nstring(&$string): void { | ||||
|     if ($string !== null) self::ensure_string($string); | ||||
|   } | ||||
| 
 | ||||
|   function getClass(): string { | ||||
|     return "string"; | ||||
|   } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user