modifs.mineures sans commentaires
This commit is contained in:
parent
7227cd7bdd
commit
4335a63d76
@ -1,5 +1,8 @@
|
|||||||
# nulib\schema
|
# nulib\schema
|
||||||
|
|
||||||
|
* ScalarSchema::from_property()
|
||||||
|
* AssocSchema === ScalarSchema(["array", "" => ["scalar", "subtype" => "assoc"]])
|
||||||
|
* ListSchema === ScalarSchema(["array", "" => ["scalar", "subtype" => "list"]])
|
||||||
* possibilité de spécifier un type via sa classe, e.g
|
* possibilité de spécifier un type via sa classe, e.g
|
||||||
~~~php
|
~~~php
|
||||||
Schema::ns($schema, [
|
Schema::ns($schema, [
|
||||||
@ -15,7 +18,6 @@
|
|||||||
~~~
|
~~~
|
||||||
MyClass ne doit pas implémenter IType, et le type correspondant est créé avec
|
MyClass ne doit pas implémenter IType, et le type correspondant est créé avec
|
||||||
`new tgeneric(MyClass::class)`
|
`new tgeneric(MyClass::class)`
|
||||||
* ScalarSchema::from_property()
|
|
||||||
|
|
||||||
* dans AssocSchema, support `[key_prefix]` qui permet de spécifier un préfixe
|
* dans AssocSchema, support `[key_prefix]` qui permet de spécifier un préfixe
|
||||||
commun aux champs dans le tableau destination, e.g
|
commun aux champs dans le tableau destination, e.g
|
||||||
|
@ -172,12 +172,12 @@ class ScalarSchema extends Schema {
|
|||||||
if (count($types) == 1 && $types[0] !== null) {
|
if (count($types) == 1 && $types[0] !== null) {
|
||||||
foreach ($types as $key => $name) {
|
foreach ($types as $key => $name) {
|
||||||
if ($key === 0) {
|
if ($key === 0) {
|
||||||
$params = null;
|
$args = null;
|
||||||
} else {
|
} else {
|
||||||
$params = $name;
|
$args = $name;
|
||||||
$name = $key;
|
$name = $key;
|
||||||
}
|
}
|
||||||
$definition["type"] = types::get($nullable, $name, $params, $definition);
|
$definition["type"] = types::get($nullable, $name, $args, $definition);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -106,12 +106,12 @@ class ScalarWrapper extends Wrapper {
|
|||||||
foreach ($schemaTypes as $key => $name) {
|
foreach ($schemaTypes as $key => $name) {
|
||||||
if ($key === $index) {
|
if ($key === $index) {
|
||||||
$index++;
|
$index++;
|
||||||
$params = null;
|
$args = null;
|
||||||
} else {
|
} else {
|
||||||
$params = $name;
|
$args = $name;
|
||||||
$name = $key;
|
$name = $key;
|
||||||
}
|
}
|
||||||
$type = types::get($schema->nullable, $name, $params, $this->schema->getDefinition());
|
$type = types::get($schema->nullable, $name, $args, $this->schema->getDefinition());
|
||||||
if ($firstType === null) $firstType = $type;
|
if ($firstType === null) $firstType = $type;
|
||||||
$types[] = $type;
|
$types[] = $type;
|
||||||
if ($type->isAvailable($input, $valueKey)) {
|
if ($type->isAvailable($input, $valueKey)) {
|
||||||
|
@ -31,8 +31,8 @@ class types {
|
|||||||
return self::$registry;
|
return self::$registry;
|
||||||
}
|
}
|
||||||
|
|
||||||
static function get(bool $nullable, ?string $name, ?array $params=null, ?array $definition=null): IType {
|
static function get(bool $nullable, ?string $name, ?array $args=null, ?array $definition=null): IType {
|
||||||
return self::registry()->get($nullable, $name, $params, $definition);
|
return self::registry()->get($nullable, $name, $args, $definition);
|
||||||
}
|
}
|
||||||
|
|
||||||
static function rawstring(bool $nullable=true): trawstring { return self::get($nullable, "rawstring"); }
|
static function rawstring(bool $nullable=true): trawstring { return self::get($nullable, "rawstring"); }
|
||||||
|
@ -30,12 +30,21 @@ class Registry {
|
|||||||
/** @var IType[] */
|
/** @var IType[] */
|
||||||
protected $types;
|
protected $types;
|
||||||
|
|
||||||
function get(bool $nullable, ?string $name, ?array $params=null, ?array $definition=null): IType {
|
function get(bool $nullable, ?string $name, ?array $args=null, ?array $definition=null): IType {
|
||||||
$name ??= "raw";
|
$name ??= "raw";
|
||||||
$class = self::TYPES[$name];
|
$class = self::TYPES[$name];
|
||||||
|
if (cl::is_list($args)) {
|
||||||
|
$key = array_key_last($args);
|
||||||
|
$params = $args[$key];
|
||||||
|
unset($args[$key]);
|
||||||
|
} else {
|
||||||
|
$params = $args;
|
||||||
|
$args = null;
|
||||||
|
}
|
||||||
$params = cl::merge($class::get_params_from_definition($definition), $params);
|
$params = cl::merge($class::get_params_from_definition($definition), $params);
|
||||||
if ($params !== null) {
|
if ($args || $params !== null) {
|
||||||
return func::with([$class, false, $nullable, $params])->invoke();
|
$args ??= [];
|
||||||
|
return func::with([$class, false, ...$args, $nullable, $params])->invoke();
|
||||||
}
|
}
|
||||||
if ($nullable) $name = "?$name";
|
if ($nullable) $name = "?$name";
|
||||||
$type = cl::get($this->types, $name);
|
$type = cl::get($this->types, $name);
|
||||||
|
@ -15,6 +15,10 @@ abstract class _tsimple implements IType {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* $nullable et $params doivent toujours être les derniers arguments du
|
||||||
|
* constructeur
|
||||||
|
*/
|
||||||
function __construct(bool $nullable, ?array $params=null) {
|
function __construct(bool $nullable, ?array $params=null) {
|
||||||
$this->nullable = $nullable;
|
$this->nullable = $nullable;
|
||||||
$this->params = $params;
|
$this->params = $params;
|
||||||
|
Loading…
Reference in New Issue
Block a user