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;
/**
* Class AbstractAccess: implémentation par défaut pour des instances standard
* de {@link IAccess}
*/
abstract class AbstractAccess implements IAccess {
function inc(): int {
$value = (int)$this->get();

View File

@ -4,12 +4,12 @@ namespace nur\sery\wip\php\access;
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 {
function __construct($key, bool $allowEmpty=false) {
function __construct($key, ?array $params=null) {
$this->key = $key;
$this->allowEmpty = $allowEmpty;
$this->allowEmpty = $params["allow_empty"] ?? false;
}
/** @var int|string */

View File

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

View File

@ -5,12 +5,14 @@ use ArrayAccess;
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 {
function __construct(&$dest, $key) {
function __construct(&$dest, $key, ?array $params=null) {
$this->dest =& $dest;
$this->key = $key;
$this->allowFalse = $params["allow_false"] ?? false;
$this->allowEmpty = $params["allow_empty"] ?? true;
}
/** @var array|ArrayAccess */
@ -19,17 +21,30 @@ class KeyAccess extends AbstractAccess {
/** @var int|string */
protected $key;
protected bool $allowFalse;
protected bool $allowEmpty;
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 {
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) {
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 {

View File

@ -6,17 +6,7 @@ use nur\sery\cl;
/**
* Class PostAccess: accès à une valeur de $_POST
*/
class PostAccess extends AbstractAccess {
function __construct($key, bool $allowEmpty=false) {
$this->key = $key;
$this->allowEmpty = $allowEmpty;
}
/** @var int|string */
protected $key;
protected bool $allowEmpty;
class PostAccess extends FormAccess {
function exists(): bool {
$key = $this->key;
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;
/**
* 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}
*
* 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
* {@link IGetter} attaquent de nouveau $reader comme initialement
*/
class DoubleAccess extends AbstractAccess {
class ShadowAccess extends AbstractAccess {
function __construct(IAccess $reader, IAccess $writer) {
$this->reader = $reader;
$this->writer = $writer;