modifs.mineures sans commentaires

This commit is contained in:
Jephté Clain 2024-08-17 21:34:05 +04:00
parent 94e1cb6e0c
commit b2a39dea31
7 changed files with 43 additions and 32 deletions

View File

@ -3,6 +3,10 @@ namespace nur\sery\wip\php\access;
use nur\sery\cl; use nur\sery\cl;
/**
* Class AbstractAccess: implémentation par défaut pour des instances standard
* de {@link IAccess}
*/
abstract class AbstractAccess implements IAccess { abstract class AbstractAccess implements IAccess {
function inc(): int { function inc(): int {
$value = (int)$this->get(); $value = (int)$this->get();

View File

@ -4,12 +4,12 @@ namespace nur\sery\wip\php\access;
use nur\sery\cl; use nur\sery\cl;
/** /**
* Class GetAccess: accès à une valeur de $_POST puis $_GET, dans cet ordre * Class FormAccess: accès à une valeur de $_POST puis $_GET, dans cet ordre
*/ */
class FormAccess extends AbstractAccess { class FormAccess extends AbstractAccess {
function __construct($key, bool $allowEmpty=false) { function __construct($key, ?array $params=null) {
$this->key = $key; $this->key = $key;
$this->allowEmpty = $allowEmpty; $this->allowEmpty = $params["allow_empty"] ?? false;
} }
/** @var int|string */ /** @var int|string */

View File

@ -6,17 +6,7 @@ use nur\sery\cl;
/** /**
* Class GetAccess: accès à une valeur de $_GET * Class GetAccess: accès à une valeur de $_GET
*/ */
class GetAccess extends AbstractAccess { class GetAccess extends FormAccess {
function __construct($key, bool $allowEmpty=false) {
$this->key = $key;
$this->allowEmpty = $allowEmpty;
}
/** @var int|string */
protected $key;
protected bool $allowEmpty;
function exists(): bool { function exists(): bool {
$key = $this->key; $key = $this->key;
if ($key === null) return false; if ($key === null) return false;

View File

@ -5,12 +5,14 @@ use ArrayAccess;
use nur\sery\cl; use nur\sery\cl;
/** /**
* Class KeyAccess: accès à une valeur d'un tableau * Class KeyAccess: accès à une valeur d'une clé dans un tableau
*/ */
class KeyAccess extends AbstractAccess { class KeyAccess extends AbstractAccess {
function __construct(&$dest, $key) { function __construct(&$dest, $key, ?array $params=null) {
$this->dest =& $dest; $this->dest =& $dest;
$this->key = $key; $this->key = $key;
$this->allowFalse = $params["allow_false"] ?? false;
$this->allowEmpty = $params["allow_empty"] ?? true;
} }
/** @var array|ArrayAccess */ /** @var array|ArrayAccess */
@ -19,17 +21,30 @@ class KeyAccess extends AbstractAccess {
/** @var int|string */ /** @var int|string */
protected $key; protected $key;
protected bool $allowFalse;
protected bool $allowEmpty;
function exists(): bool { function exists(): bool {
return $this->key !== null && cl::has($this->dest, $this->key); $key = $this->key;
if ($key === null) return false;
return cl::has($this->dest, $key);
} }
function available(): bool { function available(): bool {
return $this->exists() && $this->get() !== false; if (!$this->exists()) return false;
$value = $this->get();
if ($value === false) return $this->allowFalse;
if ($value === "") return $this->allowEmpty;
return true;
} }
function get($default=null) { function get($default=null) {
if ($this->key === null) return $default; if ($this->key === null) return $default;
return cl::get($this->dest, $this->key, $default); $value = cl::get($this->dest, $this->key, $default);
if ($value === false && !$this->allowFalse) return $default;
if ($value === "" && !$this->allowEmpty) return $default;
return $value;
} }
function set($value): void { function set($value): void {

View File

@ -6,17 +6,7 @@ use nur\sery\cl;
/** /**
* Class PostAccess: accès à une valeur de $_POST * Class PostAccess: accès à une valeur de $_POST
*/ */
class PostAccess extends AbstractAccess { class PostAccess extends FormAccess {
function __construct($key, bool $allowEmpty=false) {
$this->key = $key;
$this->allowEmpty = $allowEmpty;
}
/** @var int|string */
protected $key;
protected bool $allowEmpty;
function exists(): bool { function exists(): bool {
$key = $this->key; $key = $this->key;
if ($key === null) return false; if ($key === null) return false;

12
wip/php/access/README.md Normal file
View File

@ -0,0 +1,12 @@
# nulib\php\access
Les classes de ce package sont des outils unitaires pour accéder en lecture
et/ou écriture à *une* valeur. l'idée est de disposer d'une objet générique
pour accéder à une valeur, qu'il est possible d'utiliser ou de stocker pour une
utilisateur future.
Ces classes ne sont pas conçues pour être utilisées au jour le jour; elles sont
plutôt comme des briques de base utilisées pour des traitements de plus haut
niveau.
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary

View File

@ -2,7 +2,7 @@
namespace nur\sery\wip\php\access; namespace nur\sery\wip\php\access;
/** /**
* Class DoubleAccess: accès en lecture depuis une instance de {@link IAccess} * Class ShadowAccess: accès en lecture depuis une instance de {@link IAccess}
* puis écriture dans une autre instance de {@link IAccess} * puis écriture dans une autre instance de {@link IAccess}
* *
* l'objet est initialisé avec deux instances de {@link IAccess}: $reader et * l'objet est initialisé avec deux instances de {@link IAccess}: $reader et
@ -14,7 +14,7 @@ namespace nur\sery\wip\php\access;
* - si une méthode de {@link IDeleter} est utilisée, les méthodes de * - si une méthode de {@link IDeleter} est utilisée, les méthodes de
* {@link IGetter} attaquent de nouveau $reader comme initialement * {@link IGetter} attaquent de nouveau $reader comme initialement
*/ */
class DoubleAccess extends AbstractAccess { class ShadowAccess extends AbstractAccess {
function __construct(IAccess $reader, IAccess $writer) { function __construct(IAccess $reader, IAccess $writer) {
$this->reader = $reader; $this->reader = $reader;
$this->writer = $writer; $this->writer = $writer;