From 2aeacade5c8d05f10863f2bb9c4cc7bac49472c8 Mon Sep 17 00:00:00 2001 From: Jephte Clain Date: Wed, 22 Oct 2025 17:44:07 +0400 Subject: [PATCH] =?UTF-8?q?d=C3=A9placer=20les=20fichiers=20dans=20nulib-b?= =?UTF-8?q?ase?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/php/types/vschema.php | 99 --------------------------------------- src/schema/Schema.php | 2 +- 2 files changed, 1 insertion(+), 100 deletions(-) delete mode 100644 src/php/types/vschema.php diff --git a/src/php/types/vschema.php b/src/php/types/vschema.php deleted file mode 100644 index c32a25a..0000000 --- a/src/php/types/vschema.php +++ /dev/null @@ -1,99 +0,0 @@ - vrawstring::class, - "string" => vstring::class, - "text" => vtext::class, - "bool" => vbool::class, - "int" => vint::class, - "float" => vfloat::class, - "array" => varray::class, - "func" => vfunc::class, - "raw" => vraw::class, - "mixed" => vmixed::class, - "key" => vkey::class, - "pkey" => vpkey::class, - "content" => vcontent::class, - "datetime" => vdatetime::class, - "date" => vdate::class, - "time" => vtime::class, - ]; - - private static function get_types($schema): array { - if (is_array($schema)) { - $types = $schema["type"] ?? $schema[0] ?? null; - } elseif (is_string($schema)) { - $types = $schema; - } else { - throw exceptions::invalid_value($schema, "schema"); - } - if (is_string($types)) { - $types = explode(",", $types); - } elseif (!is_array($types)) { - throw exceptions::invalid_value($types, "types"); - } - return $types; - } - - private static function get_vclass(array $types, ?bool &$nullable): ?string { - foreach ($types as $type) { - $vclass = self::VCLASSES[$type] ?? null; - if ($vclass !== null) { - $nullable = str::del_prefix($type, "?"); - return $vclass; - } - } - return null; - } - - /** indiquer si $value est conforme au schéma */ - static function check_scalar($value, $schema, bool $strict=false): bool { - $types = self::get_types($schema); - $vclass = self::get_vclass($types, $nullable); - # ce doit être un type supporté - if ($vclass === null) return false; - if ($value === null) return $nullable; - return $vclass::isa($value, $strict); - } - - static function ensure_scalar(&$value, $schema): bool { - $types = self::get_types($schema); - $vclass = self::get_vclass($types, $nullable); - # ce doit être un type supporté - if ($vclass === null) return false; - if ($nullable) $value = $vclass::withn($value); - else $value = $vclass::with($value); - return true; - } - - /** indiquer si $value est conforme au schéma */ - static function check_assoc(?array $array, array $schema): bool { - foreach ($schema as $key => $kschema) { - $required = vbool::with($kschema["required"] ?? false); - $exists = array_key_exists($key, $array); - if (!$exists && $required) return false; - if (!self::check_scalar($array[$key], $kschema)) return false; - } - return true; - } - - /** - * s'assurer que $value est conforme au schéma - * - les clés ne sont pas créées si elles n'existent pas - * - */ - static function ensure_assoc(&$value, array $schema): void { - - } -} diff --git a/src/schema/Schema.php b/src/schema/Schema.php index 22d0556..4dc669a 100644 --- a/src/schema/Schema.php +++ b/src/schema/Schema.php @@ -42,7 +42,7 @@ use nulib\schema\types\trawstring; */ abstract class Schema implements ArrayAccess { /** - * créer le cas échéant une nouvelle instance de {@link Schema} à partir d'une + * créer le cas échéant une nouvelle instance de cette classe à partir d'une * définition de schéma * * - si $schema est une instance de schéma, la retourner