Compare commits
4 Commits
Author | SHA1 | Date | |
---|---|---|---|
1536e091fb | |||
a8d55d329a | |||
60ab13ff84 | |||
f2614385fe |
14
.pman.conf
14
.pman.conf
@ -1,11 +1,11 @@
|
|||||||
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
|
||||||
UPSTREAM=dev74
|
UPSTREAM=
|
||||||
DEVELOP=dev82
|
DEVELOP=dev74
|
||||||
FEATURE=wip82/
|
FEATURE=wip74/
|
||||||
RELEASE=rel82-
|
RELEASE=rel74-
|
||||||
MAIN=dist82
|
MAIN=dist74
|
||||||
TAG_SUFFIX=p82
|
TAG_SUFFIX=p74
|
||||||
HOTFIX=hotf82-
|
HOTFIX=hotf74-
|
||||||
DIST=
|
DIST=
|
||||||
NOAUTO=
|
NOAUTO=
|
||||||
|
@ -4,5 +4,5 @@
|
|||||||
RUNPHP=
|
RUNPHP=
|
||||||
|
|
||||||
# Si RUNPHP n'est pas défini, les variables suivantes peuvent être définies
|
# Si RUNPHP n'est pas défini, les variables suivantes peuvent être définies
|
||||||
DIST=d12
|
DIST=d11
|
||||||
#REGISTRY=pubdocker.univ-reunion.fr/dist
|
#REGISTRY=pubdocker.univ-reunion.fr/dist
|
||||||
|
@ -15,12 +15,12 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"symfony/yaml": "^7.1",
|
"symfony/yaml": "^5.0",
|
||||||
"ext-json": "*",
|
"ext-json": "*",
|
||||||
"php": "^8.2"
|
"php": "^7.4"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"nulib/tests": "^8.2",
|
"nulib/tests": "^7.4",
|
||||||
"ext-posix": "*",
|
"ext-posix": "*",
|
||||||
"ext-pcntl": "*",
|
"ext-pcntl": "*",
|
||||||
"ext-curl": "*",
|
"ext-curl": "*",
|
||||||
|
@ -3,13 +3,16 @@ namespace nulib\php;
|
|||||||
|
|
||||||
use Closure;
|
use Closure;
|
||||||
use Exception;
|
use Exception;
|
||||||
|
use Generator;
|
||||||
use nulib\A;
|
use nulib\A;
|
||||||
|
use nulib\cl;
|
||||||
use nulib\cv;
|
use nulib\cv;
|
||||||
use nulib\StateException;
|
use nulib\StateException;
|
||||||
use nulib\ValueException;
|
use nulib\ValueException;
|
||||||
use ReflectionClass;
|
use ReflectionClass;
|
||||||
use ReflectionFunction;
|
use ReflectionFunction;
|
||||||
use ReflectionMethod;
|
use ReflectionMethod;
|
||||||
|
use Traversable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class func: outils pour appeler fonctions et méthodes dynamiquement
|
* Class func: outils pour appeler fonctions et méthodes dynamiquement
|
||||||
@ -491,6 +494,34 @@ class func {
|
|||||||
return self::with($func)->invoke($args);
|
return self::with($func)->invoke($args);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* si $value est une fonction, l'appeler
|
||||||
|
* si $value ou le résultat de l'appel est un Traversable, le résoudre
|
||||||
|
* sinon retourner $value tel quel
|
||||||
|
*
|
||||||
|
* en définitive, la valeur de retour de cette fonction est soit un scalaire,
|
||||||
|
* soit un array, soit un objet qui n'est pas Traversable
|
||||||
|
* @return mixed
|
||||||
|
*/
|
||||||
|
static function get_value($value, ...$args) {
|
||||||
|
if ($value instanceof self) $value = $value->invoke($args);
|
||||||
|
elseif (is_callable($value)) $value = self::call($value, ...$args);
|
||||||
|
if ($value instanceof Traversable) $value = cl::all($value);
|
||||||
|
return $value;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* si $value est une fonction, l'appeler
|
||||||
|
* si $value ou le résultat de l'appel est un Traversable, le retourner
|
||||||
|
* sinon retourner $value en tant qu'array
|
||||||
|
*/
|
||||||
|
static function get_iterable($value, ...$args): ?iterable {
|
||||||
|
if ($value instanceof self) $value = $value->invoke($args);
|
||||||
|
elseif (is_callable($value)) $value = self::call($value, ...$args);
|
||||||
|
if ($value instanceof Traversable) return $value;
|
||||||
|
else return cl::withn($value);
|
||||||
|
}
|
||||||
|
|
||||||
#############################################################################
|
#############################################################################
|
||||||
|
|
||||||
protected function __construct(int $type, $func, ?array $args=null, bool $bound=false, ?string $reason=null) {
|
protected function __construct(int $type, $func, ?array $args=null, bool $bound=false, ?string $reason=null) {
|
||||||
|
42
php/src/ref/schema/ref_input.php
Normal file
42
php/src/ref/schema/ref_input.php
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
<?php
|
||||||
|
namespace nulib\ref\schema;
|
||||||
|
|
||||||
|
class ref_input {
|
||||||
|
const ACCESS_AUTO = 0, ACCESS_KEY = 1, ACCESS_PROPERTY = 2;
|
||||||
|
|
||||||
|
const INPUT_PARAMS_SCHEMA = [
|
||||||
|
"access_type" => ["int", self::ACCESS_AUTO, "type d'accès: clé ou propriété"],
|
||||||
|
"allow_empty" => ["bool", true, "la chaine vide est-elle autorisée?"],
|
||||||
|
"allow_null" => ["bool", true, "la valeur null est-elle autorisée?"],
|
||||||
|
];
|
||||||
|
|
||||||
|
const ACCESS_PARAMS_SCHEMA = [
|
||||||
|
"allow_empty" => ["bool", true, "la chaine vide est-elle autorisée?"],
|
||||||
|
"allow_null" => ["bool", null, "la valeur null est-elle autorisée?"],
|
||||||
|
"allow_false" => ["bool", null, "la valeur false est-elle autorisée?"],
|
||||||
|
"protect_dest" => ["bool", null, "faut-il protéger la destination?"],
|
||||||
|
];
|
||||||
|
|
||||||
|
const VALUE_ACCESS_PARAMS_SCHEMA = [
|
||||||
|
"allow_null" => ["bool", false],
|
||||||
|
"allow_false" => ["bool", true],
|
||||||
|
"protect_dest" => ["bool", false],
|
||||||
|
];
|
||||||
|
|
||||||
|
const ARRAY_ACCESS_PARAMS_SCHEMA = [
|
||||||
|
"allow_null" => ["bool", true],
|
||||||
|
"allow_false" => ["bool", false],
|
||||||
|
"protect_dest" => ["bool", true],
|
||||||
|
"key_prefix" => ["?string", null, "préfixe des clés pour les méthodes ensureXxx()"],
|
||||||
|
"key_suffix" => ["?string", null, "suffixe des clés pour les méthodes ensureXxx()"],
|
||||||
|
];
|
||||||
|
|
||||||
|
const PROPERTY_ACCESS_PARAMS_SCHEMA = [
|
||||||
|
"allow_null" => ["bool", true],
|
||||||
|
"allow_false" => ["bool", false],
|
||||||
|
"protect_dest" => ["bool", true],
|
||||||
|
"key_prefix" => ["?string", null, "préfixe des clés pour les méthodes ensureXxx()"],
|
||||||
|
"key_suffix" => ["?string", null, "suffixe des clés pour les méthodes ensureXxx()"],
|
||||||
|
"map_names" => ["bool", true, "faut-il mapper les clés en camelCase?"]
|
||||||
|
];
|
||||||
|
}
|
@ -44,18 +44,41 @@ class ref_schema {
|
|||||||
"invalid" => "Cette valeur est invalide",
|
"invalid" => "Cette valeur est invalide",
|
||||||
];
|
];
|
||||||
|
|
||||||
|
const PARAMS_SCHEMA = [
|
||||||
|
"analyze" => ["bool", true, "faut-il analyser la valeur?"],
|
||||||
|
"reanalyze" => ["bool", true, "faut-il forcer l'analyse de la valeur?"],
|
||||||
|
"normalize" => ["bool", true, "faut-il normaliser la valeur?"],
|
||||||
|
"renormalize" => ["bool", true, "faut-il forcer la normalisation de la valeur?"],
|
||||||
|
"throw" => ["bool", true, "faut-il lancer une exception en cas d'erreur?"],
|
||||||
|
//...ref_input::INPUT_PARAMS_SCHEMA,
|
||||||
|
];
|
||||||
|
|
||||||
/** @var array clés supplémentaires de schéma de la nature scalaire */
|
/** @var array clés supplémentaires de schéma de la nature scalaire */
|
||||||
const SCALAR_NATURE_METASCHEMA = [
|
const SCALAR_NATURE_METASCHEMA = [
|
||||||
];
|
];
|
||||||
|
|
||||||
|
const SCALAR_PARAMS_SCHEMA = [
|
||||||
|
];
|
||||||
|
|
||||||
/** @var array clés supplémentaires de schéma de la nature associative */
|
/** @var array clés supplémentaires de schéma de la nature associative */
|
||||||
const ASSOC_NATURE_METASCHEMA = [
|
const ASSOC_NATURE_METASCHEMA = [
|
||||||
"ensure_array" => ["bool", false, "faut-il s'assurer que le tableau destination est non nul?"],
|
"ensure_array" => ["bool", null, "faut-il s'assurer que le tableau destination est non nul?"],
|
||||||
"ensure_keys" => ["bool", true, "faut-il s'assurer que toutes les clés existent?"],
|
"ensure_assoc" => ["bool", null, "faut-il s'assurer que le tableau destination est associatif?"],
|
||||||
"ensure_order" => ["bool", true, "faut-il s'assurer que les clés soient dans l'ordre?"],
|
"ensure_keys" => ["bool", null, "faut-il s'assurer que toutes les clés existent avec la valeur par défaut?"],
|
||||||
|
"ensure_order" => ["bool", null, "faut-il s'assurer que les clés soient dans l'ordre?"],
|
||||||
|
];
|
||||||
|
|
||||||
|
const ASSOC_PARAMS_SCHEMA = [
|
||||||
|
"ensure_array" => ["bool", false],
|
||||||
|
"ensure_assoc" => ["bool", true],
|
||||||
|
"ensure_keys" => ["bool", true],
|
||||||
|
"ensure_order" => ["bool", true],
|
||||||
];
|
];
|
||||||
|
|
||||||
/** @var array clés supplémentaires de schéma de la nature liste */
|
/** @var array clés supplémentaires de schéma de la nature liste */
|
||||||
const LIST_NATURE_METASCHEMA = [
|
const LIST_NATURE_METASCHEMA = [
|
||||||
];
|
];
|
||||||
|
|
||||||
|
const LIST_PARAMS_SCHEMA = [
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user