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;
|
||||
protected int $highestResult;
|
||||
|
||||
function reset(): void {
|
||||
parent::reset();
|
||||
$this->highestResult = -1;
|
||||
}
|
||||
|
||||
protected function _addMessage(Wrapper $wrapper, $prefix=null): void {
|
||||
$result = $wrapper->getResult();
|
||||
$message = $this->message;
|
||||
if ($message) $message .= "\n";
|
||||
if ($prefix !== null) $message .= "$prefix: ";
|
||||
$message .= $result->message;
|
||||
$this->message = $message;
|
||||
}
|
||||
|
||||
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";
|
||||
$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;
|
||||
$this->message = $message;
|
||||
$this->_addMessage($wrapper, $prefix);
|
||||
}
|
||||
|
||||
function addUnavailableMessage(Wrapper $wrapper): void {
|
||||
$this->resultAvailable = true;
|
||||
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";
|
||||
$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;
|
||||
$this->message = $message;
|
||||
$this->_addMessage($wrapper, $prefix);
|
||||
}
|
||||
|
||||
function addNullMessage(Wrapper $wrapper): void {
|
||||
$this->resultAvailable = true;
|
||||
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";
|
||||
$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;
|
||||
$this->message = $message;
|
||||
$this->_addMessage($wrapper, $prefix);
|
||||
}
|
||||
|
||||
function addInvalidMessage(Wrapper $wrapper): void {
|
||||
$this->resultAvailable = true;
|
||||
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";
|
||||
$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;
|
||||
$this->message = $message;
|
||||
}
|
||||
$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…
Reference in New Issue
Block a user