modifs.mineures sans commentaires
This commit is contained in:
		
							parent
							
								
									80fab7e636
								
							
						
					
					
						commit
						587df17273
					
				| @ -1,18 +1,13 @@ | ||||
| <?php | ||||
| namespace nulib; | ||||
| 
 | ||||
| use nulib\A; | ||||
| use nulib\app\cli\Application; | ||||
| use nulib\app\LockFile; | ||||
| use nulib\app\RunFile; | ||||
| use nulib\cl; | ||||
| use nulib\ExitError; | ||||
| use nulib\os\path; | ||||
| use nulib\os\sh; | ||||
| use nulib\php\func; | ||||
| use nulib\str; | ||||
| use nulib\ValueException; | ||||
| use nur\cli\Application as nur_Application; | ||||
| use nulib\app\cli\Application; | ||||
| 
 | ||||
| class app { | ||||
|   private static function isa_Application($app): bool { | ||||
|  | ||||
| @ -2,6 +2,7 @@ | ||||
| namespace nulib\app\cli; | ||||
| 
 | ||||
| use Exception; | ||||
| use nulib\app; | ||||
| use nulib\app\RunFile; | ||||
| use nulib\ExitError; | ||||
| use nulib\ext\yaml; | ||||
| @ -13,7 +14,6 @@ use nulib\ValueException; | ||||
| use nur\cli\ArgsException; | ||||
| use nur\cli\ArgsParser; | ||||
| use nur\config; | ||||
| use nulib\app; | ||||
| 
 | ||||
| /** | ||||
|  * Class Application: application de base | ||||
|  | ||||
| @ -1,8 +1,6 @@ | ||||
| <?php | ||||
| namespace nulib\php\access; | ||||
| 
 | ||||
| use nulib\cl; | ||||
| 
 | ||||
| /** | ||||
|  * Class GetAccess: accès à une valeur de $_GET | ||||
|  */ | ||||
|  | ||||
| @ -1,8 +1,6 @@ | ||||
| <?php | ||||
| namespace nulib\php\access; | ||||
| 
 | ||||
| use ReflectionClass; | ||||
| 
 | ||||
| /** | ||||
|  * Interface IAccess: abstraction d'un accès complet à une valeur | ||||
|  */ | ||||
|  | ||||
| @ -3,7 +3,6 @@ namespace nulib\php\access; | ||||
| 
 | ||||
| use ArrayAccess; | ||||
| use nulib\cl; | ||||
| use nulib\ref\schema\ref_schema; | ||||
| 
 | ||||
| /** | ||||
|  * Class KeyAccess: accès | ||||
|  | ||||
| @ -1,8 +1,6 @@ | ||||
| <?php | ||||
| namespace nulib\php\access; | ||||
| 
 | ||||
| use nulib\cl; | ||||
| 
 | ||||
| /** | ||||
|  * Class PostAccess: accès à une valeur de $_POST | ||||
|  */ | ||||
|  | ||||
| @ -5,7 +5,6 @@ use Exception; | ||||
| use Generator; | ||||
| use Iterator; | ||||
| use IteratorAggregate; | ||||
| use nulib\php\ICloseable; | ||||
| use nulib\StopException; | ||||
| use nulib\ValueException; | ||||
| use Traversable; | ||||
|  | ||||
| @ -1,98 +1,67 @@ | ||||
| <?php | ||||
| namespace nulib\schema; | ||||
| 
 | ||||
| use nulib\ref\schema\ref_analyze; | ||||
| use nulib\ValueException; | ||||
| 
 | ||||
| class ConsolidatedResult extends Result { | ||||
|   function addMissingMessage(Wrapper $wrapper): void { | ||||
|     $this->resultAvailable = true; | ||||
|     $this->present = false; | ||||
|     $this->available = false; | ||||
|     $this->null = false; | ||||
|     $this->valid = false; | ||||
|     $this->messageKey = "missing"; | ||||
|   protected int $highestResult; | ||||
| 
 | ||||
|   function reset(): void { | ||||
|     parent::reset(); | ||||
|     $this->highestResult = -1; | ||||
|   } | ||||
| 
 | ||||
|   protected function _addMessage(Wrapper $wrapper, $prefix=null): void { | ||||
|     $result = $wrapper->getResult(); | ||||
|     $resultException = $result->exception; | ||||
|     $resultMessage = $result->message; | ||||
|     if ($resultException !== null) { | ||||
|       $tmessage = ValueException::get_message($resultException); | ||||
|       if ($tmessage) { | ||||
|         if ($resultMessage !== null) $resultMessage .= ": "; | ||||
|         $resultMessage .= $tmessage; | ||||
|       } | ||||
|     } | ||||
|     $message = $this->message; | ||||
|     if ($message) $message .= "\n"; | ||||
|     $message .= $resultMessage; | ||||
|     if ($prefix !== null) $message .= "$prefix: "; | ||||
|     $message .= $result->message; | ||||
|     $this->message = $message; | ||||
|   } | ||||
| 
 | ||||
|   function addUnavailableMessage(Wrapper $wrapper): void { | ||||
|     $this->resultAvailable = true; | ||||
|     $this->present = true; | ||||
|     $this->available = false; | ||||
|     $this->null = false; | ||||
|     $this->valid = false; | ||||
|     $this->messageKey = "unavailable"; | ||||
|     $result = $wrapper->getResult(); | ||||
|     $resultException = $result->exception; | ||||
|     $resultMessage = $result->message; | ||||
|     if ($resultException !== null) { | ||||
|       $tmessage = ValueException::get_message($resultException); | ||||
|       if ($tmessage) { | ||||
|         if ($resultMessage !== null) $resultMessage .= ": "; | ||||
|         $resultMessage .= $tmessage; | ||||
|       } | ||||
|   function addMissingMessage(Wrapper $wrapper, $prefix=null): void { | ||||
|     if ($this->highestResult < ref_analyze::MISSING) { | ||||
|       $this->present = false; | ||||
|       $this->available = false; | ||||
|       $this->null = false; | ||||
|       $this->valid = false; | ||||
|       $this->messageKey = "missing"; | ||||
|     } | ||||
|     $message = $this->message; | ||||
|     if ($message) $message .= "\n"; | ||||
|     $message .= $resultMessage; | ||||
|     $this->message = $message; | ||||
|     $this->_addMessage($wrapper, $prefix); | ||||
|   } | ||||
| 
 | ||||
|   function addNullMessage(Wrapper $wrapper): void { | ||||
|     $this->resultAvailable = true; | ||||
|     $this->present = true; | ||||
|     $this->available = true; | ||||
|     $this->null = true; | ||||
|     $this->valid = false; | ||||
|     $this->messageKey = "null"; | ||||
|     $result = $wrapper->getResult(); | ||||
|     $resultException = $result->exception; | ||||
|     $resultMessage = $result->message; | ||||
|     if ($resultException !== null) { | ||||
|       $tmessage = ValueException::get_message($resultException); | ||||
|       if ($tmessage) { | ||||
|         if ($resultMessage !== null) $resultMessage .= ": "; | ||||
|         $resultMessage .= $tmessage; | ||||
|       } | ||||
|   function addUnavailableMessage(Wrapper $wrapper, $prefix=null): void { | ||||
|     if ($this->highestResult < ref_analyze::UNAVAILABLE) { | ||||
|       $this->present = true; | ||||
|       $this->available = false; | ||||
|       $this->null = false; | ||||
|       $this->valid = false; | ||||
|       $this->messageKey = "unavailable"; | ||||
|     } | ||||
|     $message = $this->message; | ||||
|     if ($message) $message .= "\n"; | ||||
|     $message .= $resultMessage; | ||||
|     $this->message = $message; | ||||
|     $this->_addMessage($wrapper, $prefix); | ||||
|   } | ||||
| 
 | ||||
|   function addInvalidMessage(Wrapper $wrapper): void { | ||||
|     $this->resultAvailable = true; | ||||
|     $this->present = true; | ||||
|     $this->available = true; | ||||
|     $this->null = false; | ||||
|     $this->valid = false; | ||||
|     $this->messageKey = "invalid"; | ||||
|     $result = $wrapper->getResult(); | ||||
|     $resultException = $result->exception; | ||||
|     $resultMessage = $result->message; | ||||
|     if ($resultException !== null) { | ||||
|       $tmessage = ValueException::get_message($resultException); | ||||
|       if ($tmessage) { | ||||
|         if ($resultMessage !== null) $resultMessage .= ": "; | ||||
|         $resultMessage .= $tmessage; | ||||
|       } | ||||
|   function addNullMessage(Wrapper $wrapper, $prefix=null): void { | ||||
|     if ($this->highestResult < ref_analyze::NULL) { | ||||
|       $this->present = true; | ||||
|       $this->available = true; | ||||
|       $this->null = true; | ||||
|       $this->valid = false; | ||||
|       $this->messageKey = "null"; | ||||
|     } | ||||
|     $message = $this->message; | ||||
|     if ($message) $message .= "\n"; | ||||
|     $message .= $resultMessage; | ||||
|     $this->message = $message; | ||||
|     $this->_addMessage($wrapper, $prefix); | ||||
|   } | ||||
| 
 | ||||
|   function addInvalidMessage(Wrapper $wrapper, $prefix=null): void { | ||||
|     if ($this->highestResult < ref_analyze::INVALID) { | ||||
|       $this->present = true; | ||||
|       $this->available = true; | ||||
|       $this->null = false; | ||||
|       $this->valid = false; | ||||
|       $this->messageKey = "invalid"; | ||||
|     } | ||||
|     $this->_addMessage($wrapper, $prefix); | ||||
|   } | ||||
| } | ||||
|  | ||||
| @ -39,7 +39,7 @@ class Result { | ||||
|   public ?string $messageKey; | ||||
|   public ?string $message; | ||||
|   public ?Throwable $exception; | ||||
|   public ?string $origValue; | ||||
|   public $origValue; | ||||
|   public $normalizedValue; | ||||
| 
 | ||||
|   /** réinitialiser tous les objets résultats accessibles via cet objet */ | ||||
| @ -119,11 +119,9 @@ class Result { | ||||
|     $this->valid = false; | ||||
|     $this->origValue = $value; | ||||
|     $this->messageKey = $messageKey = "invalid"; | ||||
|     $message = $this->getMessage($messageKey, $schema); | ||||
|     if ($exception !== null) { | ||||
|       $tmessage = ValueException::get_message($exception); | ||||
|       if ($tmessage) $message = $tmessage; | ||||
|     } | ||||
|     $message = null; | ||||
|     if ($exception !== null) $message = ValueException::get_message($exception); | ||||
|     if (!$message) $message = $this->getMessage($messageKey, $schema); | ||||
|     $this->message = $message; | ||||
|     $this->exception = $exception; | ||||
|     return ref_analyze::INVALID; | ||||
|  | ||||
| @ -12,8 +12,8 @@ use nulib\schema\_scalar\ScalarSchema; | ||||
| use nulib\schema\types\IType; | ||||
| use nulib\schema\types\tarray; | ||||
| use nulib\schema\types\tbool; | ||||
| use nulib\schema\types\tfunc; | ||||
| use nulib\schema\types\tcontent; | ||||
| use nulib\schema\types\tfunc; | ||||
| use nulib\schema\types\tpkey; | ||||
| use nulib\schema\types\trawstring; | ||||
| 
 | ||||
|  | ||||
| @ -3,9 +3,9 @@ namespace nulib\schema\_assoc; | ||||
| 
 | ||||
| use nulib\cl; | ||||
| use nulib\ref\schema\ref_schema; | ||||
| use nulib\ValueException; | ||||
| use nulib\schema\Schema; | ||||
| use nulib\schema\Wrapper; | ||||
| use nulib\ValueException; | ||||
| 
 | ||||
| /** | ||||
|  * Class AssocSchema | ||||
|  | ||||
| @ -105,18 +105,21 @@ class AssocWrapper extends Wrapper { | ||||
| 
 | ||||
|     $result = $context->consolidatedResult; | ||||
|     $result->setValid(); | ||||
|     foreach ($context->keyWrappers as $keyWrapper) { | ||||
|     foreach ($context->keyWrappers as $key => $keyWrapper) { | ||||
|       $keyWrapper->analyze($params); | ||||
|       if ($keyWrapper->isValid()) continue; | ||||
|       $what = ref_analyze::INVALID; | ||||
|       #XXX utiliser si possible la description ou une autre valeur "user-friendly"
 | ||||
|       # possibilité de sélectionner la valeur à utiliser dans $params?
 | ||||
|       $prefix = $key; | ||||
|       if (!$keyWrapper->isPresent()) { | ||||
|         $result->addMissingMessage($keyWrapper); | ||||
|         $result->addMissingMessage($keyWrapper, $prefix); | ||||
|       } elseif (!$keyWrapper->isAvailable()) { | ||||
|         $result->addUnavailableMessage($keyWrapper); | ||||
|         $result->addUnavailableMessage($keyWrapper, $prefix); | ||||
|       } elseif ($keyWrapper->isNull()) { | ||||
|         $result->addNullMessage($keyWrapper); | ||||
|         $result->addNullMessage($keyWrapper, $prefix); | ||||
|       } else { | ||||
|         $result->addInvalidMessage($keyWrapper); | ||||
|         $result->addInvalidMessage($keyWrapper, $prefix); | ||||
|       } | ||||
|     } | ||||
| 
 | ||||
|  | ||||
| @ -2,9 +2,9 @@ | ||||
| namespace nulib\schema\_list; | ||||
| 
 | ||||
| use nulib\ref\schema\ref_schema; | ||||
| use nulib\ValueException; | ||||
| use nulib\schema\Schema; | ||||
| use nulib\schema\Wrapper; | ||||
| use nulib\ValueException; | ||||
| 
 | ||||
| class ListSchema extends Schema { | ||||
|   /** @var array meta-schema d'un schéma de nature liste */ | ||||
|  | ||||
| @ -1,11 +1,10 @@ | ||||
| <?php | ||||
| namespace nulib\schema\_scalar; | ||||
| 
 | ||||
| use nulib\cl; | ||||
| use nulib\ref\schema\ref_schema; | ||||
| use nulib\ValueException; | ||||
| use nulib\schema\Schema; | ||||
| use nulib\schema\Wrapper; | ||||
| use nulib\ValueException; | ||||
| 
 | ||||
| /** | ||||
|  * Class ScalarSchema | ||||
|  | ||||
| @ -1,11 +1,11 @@ | ||||
| <?php | ||||
| namespace nulib\schema\input; | ||||
| 
 | ||||
| use nulib\ref\schema\ref_input; | ||||
| use nulib\StateException; | ||||
| use nulib\php\access\IAccess; | ||||
| use nulib\php\access\KeyAccess; | ||||
| use nulib\php\access\PropertyAccess; | ||||
| use nulib\ref\schema\ref_input; | ||||
| use nulib\StateException; | ||||
| 
 | ||||
| /** | ||||
|  * Class Input: accès à une valeur | ||||
|  | ||||
| @ -1,14 +1,13 @@ | ||||
| <?php | ||||
| namespace nulib\schema; | ||||
| 
 | ||||
| use nulib\ValueException; | ||||
| use nulib\schema\types\IType; | ||||
| use nulib\schema\types\Registry; | ||||
| use nulib\schema\types\tarray; | ||||
| use nulib\schema\types\tbool; | ||||
| use nulib\schema\types\tfunc; | ||||
| use nulib\schema\types\tcontent; | ||||
| use nulib\schema\types\tfloat; | ||||
| use nulib\schema\types\tfunc; | ||||
| use nulib\schema\types\tint; | ||||
| use nulib\schema\types\tkey; | ||||
| use nulib\schema\types\tmixed; | ||||
| @ -17,6 +16,7 @@ use nulib\schema\types\traw; | ||||
| use nulib\schema\types\trawstring; | ||||
| use nulib\schema\types\tstring; | ||||
| use nulib\schema\types\ttext; | ||||
| use nulib\ValueException; | ||||
| 
 | ||||
| /** | ||||
|  * Class types: classe outil pour gérer le registre de types | ||||
|  | ||||
| @ -1,10 +1,10 @@ | ||||
| <?php | ||||
| namespace nulib\schema\types; | ||||
| 
 | ||||
| use nulib\ValueException; | ||||
| use nulib\schema\input\Input; | ||||
| use nulib\schema\Result; | ||||
| use nulib\schema\Schema; | ||||
| use nulib\ValueException; | ||||
| 
 | ||||
| /** | ||||
|  * Interface IType: un type de données | ||||
|  | ||||
| @ -1,9 +1,8 @@ | ||||
| <?php | ||||
| namespace nulib\schema\types; | ||||
| 
 | ||||
| use nulib\StateException; | ||||
| use nur\prop; | ||||
| use nulib\schema\input\Input; | ||||
| use nur\prop; | ||||
| use nur\str; | ||||
| 
 | ||||
| abstract class _tsimple implements IType { | ||||
|  | ||||
| @ -2,7 +2,6 @@ | ||||
| namespace nulib\schema\types; | ||||
| 
 | ||||
| use nulib\cl; | ||||
| use nulib\ValueException; | ||||
| use nulib\schema\_scalar\ScalarSchema; | ||||
| use nulib\schema\Result; | ||||
| use nulib\schema\Schema; | ||||
|  | ||||
| @ -2,12 +2,12 @@ | ||||
| namespace nulib\schema\types; | ||||
| 
 | ||||
| use nulib\cl; | ||||
| use nulib\ValueException; | ||||
| use nur\prop; | ||||
| use nulib\schema\_scalar\ScalarSchema; | ||||
| use nulib\schema\input\Input; | ||||
| use nulib\schema\Result; | ||||
| use nulib\schema\Schema; | ||||
| use nulib\ValueException; | ||||
| use nur\prop; | ||||
| 
 | ||||
| class tbool extends _tformatable { | ||||
|   const NAME = "bool"; | ||||
| @ -60,7 +60,7 @@ class tbool extends _tformatable { | ||||
|   } | ||||
| 
 | ||||
|   function getMissingValue(?bool &$valid=null) { | ||||
|     $valid = !$this->nullable; | ||||
|     $valid = false; | ||||
|     return null; | ||||
|   } | ||||
| 
 | ||||
|  | ||||
| @ -1,10 +1,10 @@ | ||||
| <?php | ||||
| namespace nulib\schema\types; | ||||
| 
 | ||||
| use nulib\ValueException; | ||||
| use nulib\schema\_scalar\ScalarSchema; | ||||
| use nulib\schema\Result; | ||||
| use nulib\schema\Schema; | ||||
| use nulib\ValueException; | ||||
| 
 | ||||
| class tfloat extends _tformatable { | ||||
|   const NAME = "float"; | ||||
|  | ||||
| @ -3,10 +3,10 @@ namespace nulib\schema\types; | ||||
| 
 | ||||
| use Exception; | ||||
| use nulib\php\func; | ||||
| use nulib\ValueException; | ||||
| use nulib\schema\_scalar\ScalarSchema; | ||||
| use nulib\schema\Result; | ||||
| use nulib\schema\Schema; | ||||
| use nulib\ValueException; | ||||
| 
 | ||||
| class tfunc extends _tsimple { | ||||
|   const NAME = "func"; | ||||
|  | ||||
| @ -1,11 +1,10 @@ | ||||
| <?php | ||||
| namespace nulib\schema\types; | ||||
| 
 | ||||
| use nulib\ValueException; | ||||
| use nulib\schema\_scalar\ScalarSchema; | ||||
| use nulib\schema\input\Input; | ||||
| use nulib\schema\Result; | ||||
| use nulib\schema\Schema; | ||||
| use nulib\ValueException; | ||||
| 
 | ||||
| class tgeneric extends _tsimple { | ||||
|   function __construct(string $class, bool $nullable, ?array $params=null) { | ||||
|  | ||||
| @ -1,10 +1,10 @@ | ||||
| <?php | ||||
| namespace nulib\schema\types; | ||||
| 
 | ||||
| use nulib\ValueException; | ||||
| use nulib\schema\_scalar\ScalarSchema; | ||||
| use nulib\schema\Result; | ||||
| use nulib\schema\Schema; | ||||
| use nulib\ValueException; | ||||
| 
 | ||||
| class tint extends _tformatable { | ||||
|   const NAME = "int"; | ||||
|  | ||||
| @ -1,10 +1,10 @@ | ||||
| <?php | ||||
| namespace nulib\schema\types; | ||||
| 
 | ||||
| use nulib\str; | ||||
| use nulib\schema\_scalar\ScalarSchema; | ||||
| use nulib\schema\Result; | ||||
| use nulib\schema\Schema; | ||||
| use nulib\str; | ||||
| 
 | ||||
| class trawstring extends _tstring { | ||||
|   const NAME = "rawstring"; | ||||
|  | ||||
| @ -6,6 +6,7 @@ use nulib\tests\TestCase; | ||||
| use nulib\ValueException; | ||||
| use nulib\schema\_scalar\ScalarSchemaTest; | ||||
| use nulib\schema\Schema; | ||||
| use PHPStan\Type\Enum\EnumCaseObjectType; | ||||
| 
 | ||||
| class AssocSchemaTest extends TestCase { | ||||
|   const NULL_SCHEMA = [ | ||||
| @ -32,6 +33,8 @@ class AssocSchemaTest extends TestCase { | ||||
|     "messages" => null, | ||||
|     "formatter_func" => null, | ||||
|     "format" => null, | ||||
|     "size" => null, | ||||
|     "precision" => null, | ||||
|     "name" => null, | ||||
|     "pkey" => null, | ||||
|     "header" => null, | ||||
| @ -169,8 +172,8 @@ class AssocSchemaTest extends TestCase { | ||||
|       "b" => false, | ||||
|     ], $array); | ||||
| 
 | ||||
|     // false équivaut à absent
 | ||||
|     $array = ["s" => false, "i" => false, "b" => null]; | ||||
|     // false équivaut à absent, sauf pour "b" qui est de type bool
 | ||||
|     $array = ["s" => false, "i" => false, "b" => false]; | ||||
|     $schema->getWrapper($array, null, ["ensure_keys" => true]); | ||||
|     self::assertSame([ | ||||
|       "s" => "", | ||||
| @ -178,9 +181,11 @@ class AssocSchemaTest extends TestCase { | ||||
|       "b" => false, | ||||
|     ], $array); | ||||
| 
 | ||||
|     $array = ["s" => false, "i" => false, "b" => null]; | ||||
|     $array = ["s" => false, "i" => false, "b" => false]; | ||||
|     $schema->getWrapper($array, null, ["ensure_keys" => false]); | ||||
|     self::assertSame([], $array); | ||||
|     self::assertSame([ | ||||
|       "b" => false, | ||||
|     ], $array); | ||||
|   } | ||||
| 
 | ||||
|   const STRING_SCHEMA = [ | ||||
| @ -363,4 +368,29 @@ class AssocSchemaTest extends TestCase { | ||||
|       $schema->getWrapper($array); | ||||
|     }); | ||||
|   } | ||||
| 
 | ||||
|   function testMessage() { | ||||
|     $schema = new AssocSchema([ | ||||
|       "rs" => ["string", "required" => true], | ||||
|       "i" => ["int"], | ||||
|     ]); | ||||
| 
 | ||||
|     $value = []; | ||||
|     $result = $schema->getWrapper($value, null, ["throw" => false])->getResult(null); | ||||
|     $expectedMessage = <<<EOT | ||||
| rs: vous devez spécifier cette valeur | ||||
| EOT; | ||||
|     self::assertSame($expectedMessage, $result->message); | ||||
| 
 | ||||
|     $value = [ | ||||
|       "rs" => null, | ||||
|       "i" => "abc", | ||||
|     ]; | ||||
|     $result = $schema->getWrapper($value, null, ["throw" => false])->getResult(null); | ||||
|     $expectedMessage = <<<EOT | ||||
| rs: cette valeur ne doit pas être nulle | ||||
| i: une valeur numérique entière est attendue | ||||
| EOT; | ||||
|     self::assertSame($expectedMessage, $result->message); | ||||
|   } | ||||
| } | ||||
|  | ||||
| @ -19,6 +19,8 @@ class ScalarSchemaTest extends TestCase { | ||||
|     "messages" => null, | ||||
|     "formatter_func" => null, | ||||
|     "format" => null, | ||||
|     "size" => null, | ||||
|     "precision" => null, | ||||
|     "" => [ | ||||
|       "scalar", | ||||
|       "compute_func" => null, | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user