modifs.mineures sans commentaires
This commit is contained in:
parent
c63ec4e294
commit
f0239ed2fb
|
@ -0,0 +1,36 @@
|
|||
<?php
|
||||
namespace nur\sery\wip\php\access;
|
||||
|
||||
use nur\sery\cl;
|
||||
|
||||
abstract class AbstractAccess implements IAccess {
|
||||
function available($src): bool {
|
||||
return $this->exists($src) && $this->get($src) !== false;
|
||||
}
|
||||
|
||||
function inc(&$dest): int {
|
||||
$value = (int)$this->get($dest);
|
||||
$this->set(++$value, $dest);
|
||||
return $value;
|
||||
}
|
||||
|
||||
function dec(&$dest, bool $allowNegative=false): int {
|
||||
$value = (int)$this->get($dest);
|
||||
if ($allowNegative || $value > 0) {
|
||||
$this->set(--$value, $dest);
|
||||
}
|
||||
return $value;
|
||||
}
|
||||
|
||||
function merge($values, &$dest): void {
|
||||
$array = $this->get($dest);
|
||||
$array = cl::merge($array, $values);
|
||||
$this->set($array, $dest);
|
||||
}
|
||||
|
||||
function append($value, &$dest, $key=null): void {
|
||||
$array = $this->get($dest);
|
||||
cl::set($array, $key, $value);
|
||||
$this->set($array, $dest);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,72 @@
|
|||
<?php
|
||||
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 extends AbstractAccess {
|
||||
function __construct($key, bool $allowEmpty=false) {
|
||||
$this->key = $key;
|
||||
$this->allowEmpty = $allowEmpty;
|
||||
}
|
||||
|
||||
/** @var int|string */
|
||||
protected $key;
|
||||
|
||||
protected bool $allowEmpty;
|
||||
|
||||
function exists($src=null): bool {
|
||||
$key = $this->key;
|
||||
if ($key === null) return false;
|
||||
return array_key_exists($key, $_POST) || array_key_exists($key, $_GET);
|
||||
}
|
||||
|
||||
public function available($src=null): bool {
|
||||
$key = $this->key;
|
||||
if ($key === null) return false;
|
||||
if (array_key_exists($key, $_POST)) {
|
||||
return $this->allowEmpty || $_POST[$key] !== "";
|
||||
} elseif (array_key_exists($key, $_GET)) {
|
||||
return $this->allowEmpty || $_GET[$key] !== "";
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
function get($src=null, $default=null) {
|
||||
$key = $this->key;
|
||||
if ($key === null) return $default;
|
||||
if (array_key_exists($key, $_POST)) {
|
||||
$value = $_POST[$key];
|
||||
if ($value === "" && !$this->allowEmpty) return $default;
|
||||
return $value;
|
||||
} elseif (array_key_exists($key, $_GET)) {
|
||||
$value = $_GET[$key];
|
||||
if ($value === "" && !$this->allowEmpty) return $default;
|
||||
return $value;
|
||||
} else {
|
||||
return $default;
|
||||
}
|
||||
}
|
||||
|
||||
function set($value, &$dest=null): void {
|
||||
$key = $this->key;
|
||||
if ($key === null) return;
|
||||
if (!array_key_exists($key, $_POST) && array_key_exists($key, $_GET)) {
|
||||
cl::set($_GET, $key, $value);
|
||||
} else {
|
||||
cl::set($_POST, $key, $value);
|
||||
}
|
||||
}
|
||||
|
||||
function del(&$dest=null): void {
|
||||
$key = $this->key;
|
||||
if (!array_key_exists($key, $_POST) && array_key_exists($key, $_GET)) {
|
||||
cl::del($_GET, $key);
|
||||
} else {
|
||||
cl::del($_POST, $key);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,59 @@
|
|||
<?php
|
||||
namespace nur\sery\wip\php\access;
|
||||
|
||||
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;
|
||||
|
||||
function exists($src=null): bool {
|
||||
$key = $this->key;
|
||||
if ($key === null) return false;
|
||||
return array_key_exists($key, $_GET);
|
||||
}
|
||||
|
||||
public function available($src=null): bool {
|
||||
$key = $this->key;
|
||||
if ($key === null) return false;
|
||||
if (array_key_exists($key, $_GET)) {
|
||||
return $this->allowEmpty || $_GET[$key] !== "";
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
function get($src=null, $default=null) {
|
||||
$key = $this->key;
|
||||
if ($key === null) return $default;
|
||||
if (array_key_exists($key, $_GET)) {
|
||||
$value = $_GET[$key];
|
||||
if ($value === "" && !$this->allowEmpty) return $default;
|
||||
return $value;
|
||||
} else {
|
||||
return $default;
|
||||
}
|
||||
}
|
||||
|
||||
function set($value, &$dest=null): void {
|
||||
$key = $this->key;
|
||||
if ($key === null) return;
|
||||
cl::set($_GET, $key, $value);
|
||||
}
|
||||
|
||||
function del(&$dest=null): void {
|
||||
$key = $this->key;
|
||||
if ($key === null) return;
|
||||
cl::del($_GET, $key);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,28 @@
|
|||
<?php
|
||||
namespace nur\sery\wip\php\access;
|
||||
|
||||
/**
|
||||
* Interface IAccess: abstraction d'un accès complet à une valeur
|
||||
*/
|
||||
interface IAccess extends IGetter, ISetter, IDeleter {
|
||||
/** incrémenter la valeur */
|
||||
function inc(&$dest): int;
|
||||
|
||||
/** décrémenter la valeur */
|
||||
function dec(&$dest, bool $allowNegative=false): int;
|
||||
|
||||
/**
|
||||
* fusionner le tableau $values dans la destination, qui est transformée en
|
||||
* tableau d'abord si nécessaire
|
||||
*/
|
||||
function merge($values, &$dest): void;
|
||||
|
||||
/**
|
||||
* ajouter la valeur à la destination, qui est transformée en tableau d'abord
|
||||
* si nécessaire
|
||||
*
|
||||
* la valeur est ajoutée avec la clé $key le cas échéant, ou à la fin du
|
||||
* tableau si $key===null
|
||||
*/
|
||||
function append($value, &$dest, $key=null): void;
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
<?php
|
||||
namespace nur\sery\wip\php\access;
|
||||
|
||||
/**
|
||||
* Class IDeleter: une abstraction de suppression d'une valeur
|
||||
*/
|
||||
interface IDeleter {
|
||||
/** supprimer la valeur dans la destination */
|
||||
function del(&$dest): void;
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
<?php
|
||||
namespace nur\sery\wip\php\access;
|
||||
|
||||
/**
|
||||
* Class IGetter: une abstraction d'obtention d'une valeur
|
||||
*/
|
||||
interface IGetter {
|
||||
/**
|
||||
* @return bool true si la valeur existe, false sinon. ne pas tenir compte de
|
||||
* si la valeur est utilisable ou non
|
||||
*/
|
||||
function exists($src): bool;
|
||||
|
||||
/** @return bool true si la valeur existe et est utilisable, false sinon */
|
||||
function available($src): bool;
|
||||
|
||||
/** @return mixed la valeur depuis la source */
|
||||
function get($src, $default=null);
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
<?php
|
||||
namespace nur\sery\wip\php\access;
|
||||
|
||||
/**
|
||||
* Class ISetter: une abstraction de modification d'une valeur
|
||||
*/
|
||||
interface ISetter {
|
||||
/** modifier la destination avec la valeur spécifiée */
|
||||
function set($value, &$dest): void;
|
||||
}
|
|
@ -0,0 +1,35 @@
|
|||
<?php
|
||||
namespace nur\sery\wip\php\access;
|
||||
|
||||
use nur\sery\cl;
|
||||
|
||||
/**
|
||||
* Class KeyAccess: accès à une valeur d'un tableau
|
||||
*/
|
||||
class KeyAccess extends AbstractAccess {
|
||||
function __construct($key) {
|
||||
$this->key = $key;
|
||||
}
|
||||
|
||||
/** @var int|string */
|
||||
protected $key;
|
||||
|
||||
function exists($src): bool {
|
||||
return $this->key !== null && cl::has($src, $this->key);
|
||||
}
|
||||
|
||||
function get($src, $default=null) {
|
||||
if ($this->key === null) return $default;
|
||||
return cl::get($src, $this->key, $default);
|
||||
}
|
||||
|
||||
function set($value, &$dest): void {
|
||||
if ($this->key === null) return;
|
||||
cl::set($dest, $this->key, $value);
|
||||
}
|
||||
|
||||
function del(&$dest): void {
|
||||
if ($this->key === null) return;
|
||||
cl::del($dest, $this->key);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,59 @@
|
|||
<?php
|
||||
namespace nur\sery\wip\php\access;
|
||||
|
||||
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;
|
||||
|
||||
function exists($src=null): bool {
|
||||
$key = $this->key;
|
||||
if ($key === null) return false;
|
||||
return array_key_exists($key, $_POST);
|
||||
}
|
||||
|
||||
public function available($src=null): bool {
|
||||
$key = $this->key;
|
||||
if ($key === null) return false;
|
||||
if (array_key_exists($key, $_POST)) {
|
||||
return $this->allowEmpty || $_POST[$key] !== "";
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
function get($src=null, $default=null) {
|
||||
$key = $this->key;
|
||||
if ($key === null) return $default;
|
||||
if (array_key_exists($key, $_POST)) {
|
||||
$value = $_POST[$key];
|
||||
if ($value === "" && !$this->allowEmpty) return $default;
|
||||
return $value;
|
||||
} else {
|
||||
return $default;
|
||||
}
|
||||
}
|
||||
|
||||
function set($value, &$dest=null): void {
|
||||
$key = $this->key;
|
||||
if ($key === null) return;
|
||||
cl::set($_POST, $key, $value);
|
||||
}
|
||||
|
||||
function del(&$dest=null): void {
|
||||
$key = $this->key;
|
||||
if ($key === null) return;
|
||||
cl::del($_POST, $key);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,28 @@
|
|||
<?php
|
||||
namespace nur\sery\wip\php\access;
|
||||
|
||||
/**
|
||||
* Class ValueAccess: accès à une valeur scalaire
|
||||
*/
|
||||
class ValueAccess extends AbstractAccess {
|
||||
function exists($src): bool {
|
||||
return $src !== null;
|
||||
}
|
||||
|
||||
function available($src): bool {
|
||||
return $this->exists($src);
|
||||
}
|
||||
|
||||
function get($src, $default=null) {
|
||||
if ($src === null) return $default;
|
||||
else return $src;
|
||||
}
|
||||
|
||||
function set($value, &$dest): void {
|
||||
$dest = $value;
|
||||
}
|
||||
|
||||
function del(&$dest): void {
|
||||
$dest = null;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue