modifs.mineures sans commentaires

This commit is contained in:
Jephté Clain 2025-03-23 08:19:20 +04:00
parent 26817d2826
commit fd1ebaf611
5 changed files with 57 additions and 8 deletions

View File

@ -45,4 +45,13 @@ abstract class AbstractAccess implements IAccess {
cl::set($array, $key, $value); cl::set($array, $key, $value);
$this->set($array); $this->set($array);
} }
function ensureAssoc(array $keys, ?array $params=null): void {
}
function ensureKeys(array $defaults, ?array $params=null): void {
}
function ensureOrder(array $keys, ?array $params=null): void {
}
} }

View File

@ -164,4 +164,19 @@ class ChainAccess extends AbstractAccess {
return new ChainAccess($this, $key); return new ChainAccess($this, $key);
} }
} }
function ensureAssoc(array $keys, ?array $params=null): void {
#XXX fonction de $accessType?
#$this->access->ensureAssoc($keys, $params);
}
function ensureKeys(array $defaults, ?array $params=null): void {
#XXX fonction de $accessType?
#$this->access->ensureKeys($defaults, $params);
}
function ensureOrder(array $keys, ?array $params=null): void {
#XXX fonction de $accessType?
#$this->access->ensureOrder($keys, $params);
}
} }

View File

@ -1,6 +1,8 @@
<?php <?php
namespace nur\sery\wip\php\access; namespace nur\sery\wip\php\access;
use ReflectionClass;
/** /**
* Interface IAccess: abstraction d'un accès complet à une valeur * Interface IAccess: abstraction d'un accès complet à une valeur
*/ */
@ -28,4 +30,23 @@ interface IAccess extends IGetter, ISetter, IDeleter {
/** retourner une instance permettant d'accéder à $value[$key] */ /** retourner une instance permettant d'accéder à $value[$key] */
function addKey($key): IAccess; function addKey($key): IAccess;
/**
* s'assurer que la destination est un tableau associatif en remplaçant les
* clés numériques par les clés correspondantes du tableau $keys
*/
function ensureAssoc(array $keys, ?array $params=null): void;
/**
* s'assurer que toutes les clés mentionnées dans le tableau $defaults
* existent. si elles n'existent pas, leur donner la valeur du tableau
* $defaults
*/
function ensureKeys(array $defaults, ?array $params=null): void;
/**
* s'assure que les clés de la destination sont dans l'ordre mentionné dans le
* tableau $keys. toutes les clés supplémentaires sont placées à la fin
*/
function ensureOrder(array $keys, ?array $params=null): void;
} }

View File

@ -146,10 +146,6 @@ class PropertyAccess extends AbstractAccess {
return new ChainAccess($this, $key); return new ChainAccess($this, $key);
} }
function ensureAssoc(array $keys, ?array $params=null): void {
# NOP
}
function ensureKeys(array $defaults, ?array $params=null): void { function ensureKeys(array $defaults, ?array $params=null): void {
$dest = $this->dest; $dest = $this->dest;
if ($dest === null) { if ($dest === null) {
@ -176,8 +172,4 @@ class PropertyAccess extends AbstractAccess {
} }
} }
} }
function ensureOrder(array $keys, ?array $params=null): void {
# NOP
}
} }

View File

@ -57,4 +57,16 @@ class ShadowAccess extends AbstractAccess {
function addKey($key): IAccess { function addKey($key): IAccess {
return new ChainAccess($this, $key); return new ChainAccess($this, $key);
} }
function ensureAssoc(array $keys, ?array $params=null): void {
$this->writer->ensureAssoc($keys, $params);
}
function ensureKeys(array $defaults, ?array $params=null): void {
$this->writer->ensureKeys($defaults, $params);
}
function ensureOrder(array $keys, ?array $params=null): void {
$this->writer->ensureOrder($keys, $params);
}
} }