diff --git a/wip/php/access/AbstractAccess.php b/wip/php/access/AbstractAccess.php index 91301d7..848f4d9 100644 --- a/wip/php/access/AbstractAccess.php +++ b/wip/php/access/AbstractAccess.php @@ -4,33 +4,33 @@ 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 available(): bool { + return $this->exists() && $this->get() !== false; } - function inc(&$dest): int { - $value = (int)$this->get($dest); - $this->set(++$value, $dest); + function inc(): int { + $value = (int)$this->get(); + $this->set(++$value); return $value; } - function dec(&$dest, bool $allowNegative=false): int { - $value = (int)$this->get($dest); + function dec(bool $allowNegative=false): int { + $value = (int)$this->get(); if ($allowNegative || $value > 0) { - $this->set(--$value, $dest); + $this->set(--$value); } return $value; } - function merge($values, &$dest): void { - $array = $this->get($dest); + function merge(?array $values): void { + $array = $this->get(); $array = cl::merge($array, $values); - $this->set($array, $dest); + $this->set($array); } - function append($value, &$dest, $key=null): void { - $array = $this->get($dest); + function append($value, $key=null): void { + $array = $this->get(); cl::set($array, $key, $value); - $this->set($array, $dest); + $this->set($array); } } diff --git a/wip/php/access/DoubleAccess.php b/wip/php/access/DoubleAccess.php new file mode 100644 index 0000000..69344af --- /dev/null +++ b/wip/php/access/DoubleAccess.php @@ -0,0 +1,18 @@ +key; if ($key === null) return false; return array_key_exists($key, $_POST) || array_key_exists($key, $_GET); } - public function available($src=null): bool { + public function available(): bool { $key = $this->key; if ($key === null) return false; if (array_key_exists($key, $_POST)) { @@ -35,7 +35,7 @@ class FormAccess extends AbstractAccess { } } - function get($src=null, $default=null) { + function get($default=null) { $key = $this->key; if ($key === null) return $default; if (array_key_exists($key, $_POST)) { @@ -51,7 +51,7 @@ class FormAccess extends AbstractAccess { } } - function set($value, &$dest=null): void { + function set($value): void { $key = $this->key; if ($key === null) return; if (!array_key_exists($key, $_POST) && array_key_exists($key, $_GET)) { @@ -61,8 +61,9 @@ class FormAccess extends AbstractAccess { } } - function del(&$dest=null): void { + function del(): void { $key = $this->key; + if ($key === null) return; if (!array_key_exists($key, $_POST) && array_key_exists($key, $_GET)) { cl::del($_GET, $key); } else { diff --git a/wip/php/access/GetAccess.php b/wip/php/access/GetAccess.php index 3ab30cc..7f8c2da 100644 --- a/wip/php/access/GetAccess.php +++ b/wip/php/access/GetAccess.php @@ -17,13 +17,13 @@ class GetAccess extends AbstractAccess { protected bool $allowEmpty; - function exists($src=null): bool { + function exists(): bool { $key = $this->key; if ($key === null) return false; return array_key_exists($key, $_GET); } - public function available($src=null): bool { + public function available(): bool { $key = $this->key; if ($key === null) return false; if (array_key_exists($key, $_GET)) { @@ -33,7 +33,7 @@ class GetAccess extends AbstractAccess { } } - function get($src=null, $default=null) { + function get($default=null) { $key = $this->key; if ($key === null) return $default; if (array_key_exists($key, $_GET)) { @@ -45,13 +45,13 @@ class GetAccess extends AbstractAccess { } } - function set($value, &$dest=null): void { + function set($value): void { $key = $this->key; if ($key === null) return; cl::set($_GET, $key, $value); } - function del(&$dest=null): void { + function del(): void { $key = $this->key; if ($key === null) return; cl::del($_GET, $key); diff --git a/wip/php/access/IAccess.php b/wip/php/access/IAccess.php index 4c3e2e6..4cd011c 100644 --- a/wip/php/access/IAccess.php +++ b/wip/php/access/IAccess.php @@ -6,16 +6,16 @@ namespace nur\sery\wip\php\access; */ interface IAccess extends IGetter, ISetter, IDeleter { /** incrémenter la valeur */ - function inc(&$dest): int; + function inc(): int; /** décrémenter la valeur */ - function dec(&$dest, bool $allowNegative=false): int; + function dec(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; + function merge(?array $values): void; /** * ajouter la valeur à la destination, qui est transformée en tableau d'abord @@ -24,5 +24,5 @@ interface IAccess extends IGetter, ISetter, IDeleter { * 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; + function append($value, $key=null): void; } diff --git a/wip/php/access/IDeleter.php b/wip/php/access/IDeleter.php index d21f2dd..05634b7 100644 --- a/wip/php/access/IDeleter.php +++ b/wip/php/access/IDeleter.php @@ -2,9 +2,9 @@ namespace nur\sery\wip\php\access; /** - * Class IDeleter: une abstraction de suppression d'une valeur + * Class IDeleter: une abstraction d'un objet qui permet de supprimer une valeur */ interface IDeleter { /** supprimer la valeur dans la destination */ - function del(&$dest): void; + function del(): void; } diff --git a/wip/php/access/IGetter.php b/wip/php/access/IGetter.php index 96ad579..d4b1b9c 100644 --- a/wip/php/access/IGetter.php +++ b/wip/php/access/IGetter.php @@ -2,18 +2,18 @@ namespace nur\sery\wip\php\access; /** - * Class IGetter: une abstraction d'obtention d'une valeur + * Class IGetter: une abstraction d'un objet qui permet d'obtenir 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; + function exists(): bool; /** @return bool true si la valeur existe et est utilisable, false sinon */ - function available($src): bool; + function available(): bool; /** @return mixed la valeur depuis la source */ - function get($src, $default=null); + function get($default=null); } diff --git a/wip/php/access/ISetter.php b/wip/php/access/ISetter.php index dad1979..92d3cf3 100644 --- a/wip/php/access/ISetter.php +++ b/wip/php/access/ISetter.php @@ -2,9 +2,9 @@ namespace nur\sery\wip\php\access; /** - * Class ISetter: une abstraction de modification d'une valeur + * Class ISetter: une abstraction d'un objet qui permet de modifier une valeur */ interface ISetter { /** modifier la destination avec la valeur spécifiée */ - function set($value, &$dest): void; + function set($value): void; } diff --git a/wip/php/access/KeyAccess.php b/wip/php/access/KeyAccess.php index 74f8ab9..545d6e2 100644 --- a/wip/php/access/KeyAccess.php +++ b/wip/php/access/KeyAccess.php @@ -1,35 +1,40 @@ dest =& $dest; $this->key = $key; } + /** @var array|ArrayAccess */ + protected $dest; + /** @var int|string */ protected $key; - function exists($src): bool { - return $this->key !== null && cl::has($src, $this->key); + function exists(): bool { + return $this->key !== null && cl::has($this->dest, $this->key); } - function get($src, $default=null) { + function get($default=null) { if ($this->key === null) return $default; - return cl::get($src, $this->key, $default); + return cl::get($this->dest, $this->key, $default); } - function set($value, &$dest): void { + function set($value): void { if ($this->key === null) return; - cl::set($dest, $this->key, $value); + cl::set($this->dest, $this->key, $value); } - function del(&$dest): void { + function del(): void { if ($this->key === null) return; - cl::del($dest, $this->key); + cl::del($this->dest, $this->key); } } diff --git a/wip/php/access/PostAccess.php b/wip/php/access/PostAccess.php index bc3569c..5c136ce 100644 --- a/wip/php/access/PostAccess.php +++ b/wip/php/access/PostAccess.php @@ -17,13 +17,13 @@ class PostAccess extends AbstractAccess { protected bool $allowEmpty; - function exists($src=null): bool { + function exists(): bool { $key = $this->key; if ($key === null) return false; return array_key_exists($key, $_POST); } - public function available($src=null): bool { + public function available(): bool { $key = $this->key; if ($key === null) return false; if (array_key_exists($key, $_POST)) { @@ -33,7 +33,7 @@ class PostAccess extends AbstractAccess { } } - function get($src=null, $default=null) { + function get($default=null) { $key = $this->key; if ($key === null) return $default; if (array_key_exists($key, $_POST)) { @@ -45,13 +45,13 @@ class PostAccess extends AbstractAccess { } } - function set($value, &$dest=null): void { + function set($value): void { $key = $this->key; if ($key === null) return; cl::set($_POST, $key, $value); } - function del(&$dest=null): void { + function del(): void { $key = $this->key; if ($key === null) return; cl::del($_POST, $key); diff --git a/wip/php/access/ValueAccess.php b/wip/php/access/ValueAccess.php index c9c5276..86c733f 100644 --- a/wip/php/access/ValueAccess.php +++ b/wip/php/access/ValueAccess.php @@ -5,24 +5,31 @@ 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 __construct(&$dest) { + $this->dest =& $dest; } - function available($src): bool { - return $this->exists($src); + /** @var mixed */ + protected $dest; + + function exists(): bool { + return $this->dest !== null; } - function get($src, $default=null) { - if ($src === null) return $default; - else return $src; + function available(): bool { + return $this->exists(); } - function set($value, &$dest): void { - $dest = $value; + function get($default=null) { + if ($this->dest === null) return $default; + else return $this->dest; } - function del(&$dest): void { - $dest = null; + function set($value): void { + $this->dest = $value; + } + + function del(): void { + $this->dest = null; } }