modifs.mineures sans commentaires
This commit is contained in:
parent
ab7f7942d6
commit
28a857ee03
|
@ -0,0 +1,14 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="PhpTestFrameworkVersionCache">
|
||||||
|
<tools_cache>
|
||||||
|
<tool tool_name="PHPUnit">
|
||||||
|
<cache>
|
||||||
|
<versions>
|
||||||
|
<info id="Local/home/jclain/wop/php/nur-sery/vendor/autoload.php" version="9.6.20" />
|
||||||
|
</versions>
|
||||||
|
</cache>
|
||||||
|
</tool>
|
||||||
|
</tools_cache>
|
||||||
|
</component>
|
||||||
|
</project>
|
|
@ -0,0 +1,66 @@
|
||||||
|
<?php
|
||||||
|
namespace nur\sery\wip\php\access;
|
||||||
|
|
||||||
|
use nulib\tests\TestCase;
|
||||||
|
use stdClass;
|
||||||
|
|
||||||
|
class KeyAccessTest extends TestCase {
|
||||||
|
function testAccess() {
|
||||||
|
$default = new stdClass();
|
||||||
|
$array = ["null" => null, "false" => false, "empty" => ""];
|
||||||
|
|
||||||
|
#
|
||||||
|
$a = new KeyAccess($array, "inexistant");
|
||||||
|
self::assertFalse($a->exists());
|
||||||
|
self::assertFalse($a->available());
|
||||||
|
self::assertSame($default, $a->get($default));
|
||||||
|
|
||||||
|
$a = new KeyAccess($array, "null");
|
||||||
|
self::assertTrue($a->exists());
|
||||||
|
self::assertTrue($a->available());
|
||||||
|
self::assertSame(null, $a->get($default));
|
||||||
|
|
||||||
|
$a = new KeyAccess($array, "false");
|
||||||
|
self::assertTrue($a->exists());
|
||||||
|
self::assertFalse($a->available());
|
||||||
|
self::assertSame($default, $a->get($default));
|
||||||
|
|
||||||
|
$a = new KeyAccess($array, "empty");
|
||||||
|
self::assertTrue($a->exists());
|
||||||
|
self::assertTrue($a->available());
|
||||||
|
self::assertSame("", $a->get($default));
|
||||||
|
|
||||||
|
#
|
||||||
|
$a = new KeyAccess($array, "null", ["allow_null" => false]);
|
||||||
|
self::assertTrue($a->exists());
|
||||||
|
self::assertFalse($a->available());
|
||||||
|
self::assertSame($default, $a->get($default));
|
||||||
|
|
||||||
|
$a = new KeyAccess($array, "null", ["allow_null" => true]);
|
||||||
|
self::assertTrue($a->exists());
|
||||||
|
self::assertTrue($a->available());
|
||||||
|
self::assertSame(null, $a->get($default));
|
||||||
|
|
||||||
|
#
|
||||||
|
$a = new KeyAccess($array, "false", ["allow_false" => false]);
|
||||||
|
self::assertTrue($a->exists());
|
||||||
|
self::assertFalse($a->available());
|
||||||
|
self::assertSame($default, $a->get($default));
|
||||||
|
|
||||||
|
$a = new KeyAccess($array, "false", ["allow_false" => true]);
|
||||||
|
self::assertTrue($a->exists());
|
||||||
|
self::assertTrue($a->available());
|
||||||
|
self::assertSame(false, $a->get($default));
|
||||||
|
|
||||||
|
#
|
||||||
|
$a = new KeyAccess($array, "empty", ["allow_empty" => false]);
|
||||||
|
self::assertTrue($a->exists());
|
||||||
|
self::assertFalse($a->available());
|
||||||
|
self::assertSame($default, $a->get($default));
|
||||||
|
|
||||||
|
$a = new KeyAccess($array, "empty", ["allow_empty" => true]);
|
||||||
|
self::assertTrue($a->exists());
|
||||||
|
self::assertTrue($a->available());
|
||||||
|
self::assertSame("", $a->get($default));
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,69 @@
|
||||||
|
<?php
|
||||||
|
namespace nur\sery\wip\php\access;
|
||||||
|
|
||||||
|
use nulib\tests\TestCase;
|
||||||
|
use stdClass;
|
||||||
|
|
||||||
|
class ValueAccessTest extends TestCase {
|
||||||
|
function testAccess() {
|
||||||
|
$default = new stdClass();
|
||||||
|
|
||||||
|
#
|
||||||
|
$i = null;
|
||||||
|
$a = new ValueAccess($i);
|
||||||
|
self::assertFalse($a->exists());
|
||||||
|
self::assertFalse($a->available());
|
||||||
|
self::assertSame($default, $a->get($default));
|
||||||
|
|
||||||
|
$i = false;
|
||||||
|
$a = new ValueAccess($i);
|
||||||
|
self::assertTrue($a->exists());
|
||||||
|
self::assertTrue($a->available());
|
||||||
|
self::assertSame(false, $a->get($default));
|
||||||
|
|
||||||
|
$i = "";
|
||||||
|
$a = new ValueAccess($i);
|
||||||
|
self::assertTrue($a->exists());
|
||||||
|
self::assertTrue($a->available());
|
||||||
|
self::assertSame("", $a->get($default));
|
||||||
|
|
||||||
|
#
|
||||||
|
$i = null;
|
||||||
|
$a = new ValueAccess($i, ["allow_null" => false]);
|
||||||
|
self::assertFalse($a->exists());
|
||||||
|
self::assertFalse($a->available());
|
||||||
|
self::assertSame($default, $a->get($default));
|
||||||
|
|
||||||
|
$i = null;
|
||||||
|
$a = new ValueAccess($i, ["allow_null" => true]);
|
||||||
|
self::assertTrue($a->exists());
|
||||||
|
self::assertTrue($a->available());
|
||||||
|
self::assertSame(null, $a->get($default));
|
||||||
|
|
||||||
|
#
|
||||||
|
$i = false;
|
||||||
|
$a = new ValueAccess($i, ["allow_false" => false]);
|
||||||
|
self::assertTrue($a->exists());
|
||||||
|
self::assertFalse($a->available());
|
||||||
|
self::assertSame($default, $a->get($default));
|
||||||
|
|
||||||
|
$i = false;
|
||||||
|
$a = new ValueAccess($i, ["allow_false" => true]);
|
||||||
|
self::assertTrue($a->exists());
|
||||||
|
self::assertTrue($a->available());
|
||||||
|
self::assertSame(false, $a->get($default));
|
||||||
|
|
||||||
|
#
|
||||||
|
$i = "";
|
||||||
|
$a = new ValueAccess($i, ["allow_empty" => false]);
|
||||||
|
self::assertTrue($a->exists());
|
||||||
|
self::assertFalse($a->available());
|
||||||
|
self::assertSame($default, $a->get($default));
|
||||||
|
|
||||||
|
$i = "";
|
||||||
|
$a = new ValueAccess($i, ["allow_empty" => true]);
|
||||||
|
self::assertTrue($a->exists());
|
||||||
|
self::assertTrue($a->available());
|
||||||
|
self::assertSame("", $a->get($default));
|
||||||
|
}
|
||||||
|
}
|
|
@ -36,15 +36,13 @@ class KeyAccess extends AbstractAccess {
|
||||||
function exists(): bool {
|
function exists(): bool {
|
||||||
$key = $this->key;
|
$key = $this->key;
|
||||||
if ($key === null) return false;
|
if ($key === null) return false;
|
||||||
$exists = cl::has($this->dest, $key);
|
return cl::has($this->dest, $key);
|
||||||
if (!$exists) return false;
|
|
||||||
if ($this->allowNull) return true;
|
|
||||||
return cl::get($this->dest, $key) !== null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function available(): bool {
|
function available(): bool {
|
||||||
if (!$this->exists()) return false;
|
if (!$this->exists()) return false;
|
||||||
$value = $this->get();
|
$value = cl::get($this->dest, $this->key);
|
||||||
|
if ($value === null) return $this->allowNull;
|
||||||
if ($value === false) return $this->allowFalse;
|
if ($value === false) return $this->allowFalse;
|
||||||
if ($value === "") return $this->allowEmpty;
|
if ($value === "") return $this->allowEmpty;
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -32,7 +32,7 @@ class ValueAccess extends AbstractAccess {
|
||||||
|
|
||||||
function available(): bool {
|
function available(): bool {
|
||||||
if (!$this->exists()) return false;
|
if (!$this->exists()) return false;
|
||||||
$value = $this->get();
|
$value = $this->dest;
|
||||||
if ($value === false) return $this->allowFalse;
|
if ($value === false) return $this->allowFalse;
|
||||||
if ($value === "") return $this->allowEmpty;
|
if ($value === "") return $this->allowEmpty;
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -3,6 +3,11 @@ namespace nur\sery\wip\schema\input;
|
||||||
|
|
||||||
#XXX implémenter le renommage de paramètres et faire des méthodes pour
|
#XXX implémenter le renommage de paramètres et faire des méthodes pour
|
||||||
# construire des querystring et paramètres de formulaires
|
# construire des querystring et paramètres de formulaires
|
||||||
|
use nur\sery\wip\php\access\FormAccess;
|
||||||
|
use nur\sery\wip\php\access\IAccess;
|
||||||
|
use nur\sery\wip\php\access\KeyAccess;
|
||||||
|
use nur\sery\wip\php\access\ShadowAccess;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class FormInput: accès à des paramètres de formulaire (POST ou GET, dans cet
|
* Class FormInput: accès à des paramètres de formulaire (POST ou GET, dans cet
|
||||||
* ordre)
|
* ordre)
|
||||||
|
@ -13,34 +18,15 @@ namespace nur\sery\wip\schema\input;
|
||||||
class FormInput extends Input {
|
class FormInput extends Input {
|
||||||
const ALLOW_EMPTY = false;
|
const ALLOW_EMPTY = false;
|
||||||
|
|
||||||
function isPresent($key=null): bool {
|
protected function formAccess($key): IAccess {
|
||||||
if ($key === null) return false;
|
return new FormAccess($key, [
|
||||||
return array_key_exists($key, $_POST) || array_key_exists($key, $_GET);
|
"allow_empty" => $this->allowEmpty,
|
||||||
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
function isAvailable($key=null): bool {
|
protected function access($key): IAccess {
|
||||||
if ($key === null) return false;
|
return $this->keyAccess[$key] ??= new ShadowAccess($this->formAccess($key), new KeyAccess($this->dest, $key, [
|
||||||
if (array_key_exists($key, $_POST)) {
|
"allow_empty" => $this->allowEmpty,
|
||||||
return $this->allowEmpty || $_POST[$key] !== "";
|
]));
|
||||||
} elseif (array_key_exists($key, $_GET)) {
|
|
||||||
return $this->allowEmpty || $_GET[$key] !== "";
|
|
||||||
} else {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function get($key=null) {
|
|
||||||
if ($key === null) return null;
|
|
||||||
if (array_key_exists($key, $_POST)) {
|
|
||||||
$value = $_POST[$key];
|
|
||||||
if ($value === "" && !$this->allowEmpty) return null;
|
|
||||||
return $value;
|
|
||||||
} elseif (array_key_exists($key, $_GET)) {
|
|
||||||
$value = $_GET[$key];
|
|
||||||
if ($value === "" && !$this->allowEmpty) return null;
|
|
||||||
return $value;
|
|
||||||
} else {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
<?php
|
<?php
|
||||||
namespace nur\sery\wip\schema\input;
|
namespace nur\sery\wip\schema\input;
|
||||||
|
|
||||||
|
use nur\sery\wip\php\access\GetAccess;
|
||||||
|
use nur\sery\wip\php\access\IAccess;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class GetInput: accès à des paramètres de formulaire de type GET uniquement
|
* Class GetInput: accès à des paramètres de formulaire de type GET uniquement
|
||||||
*
|
*
|
||||||
|
@ -8,28 +11,9 @@ namespace nur\sery\wip\schema\input;
|
||||||
* une référence
|
* une référence
|
||||||
*/
|
*/
|
||||||
class GetInput extends FormInput {
|
class GetInput extends FormInput {
|
||||||
function isPresent($key=null): bool {
|
protected function formAccess($key): IAccess {
|
||||||
if ($key === null) return false;
|
return new GetAccess($key, [
|
||||||
return array_key_exists($key, $_GET);
|
"allow_empty" => $this->allowEmpty,
|
||||||
}
|
]);
|
||||||
|
|
||||||
function isAvailable($key=null): bool {
|
|
||||||
if ($key === null) return false;
|
|
||||||
if (array_key_exists($key, $_GET)) {
|
|
||||||
return $this->allowEmpty || $_GET[$key] !== "";
|
|
||||||
} else {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function get($key=null) {
|
|
||||||
if ($key === null) return null;
|
|
||||||
if (array_key_exists($key, $_GET)) {
|
|
||||||
$value = $_GET[$key];
|
|
||||||
if ($value === "" && !$this->allowEmpty) return null;
|
|
||||||
return $value;
|
|
||||||
} else {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
<?php
|
<?php
|
||||||
namespace nur\sery\wip\schema\input;
|
namespace nur\sery\wip\schema\input;
|
||||||
|
|
||||||
use nur\sery\cl;
|
use nur\sery\wip\php\access\IAccess;
|
||||||
|
use nur\sery\wip\php\access\KeyAccess;
|
||||||
|
use nur\sery\wip\php\access\ValueAccess;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class Input: accès à une valeur
|
* Class Input: accès à une valeur
|
||||||
|
@ -13,49 +15,52 @@ class Input {
|
||||||
|
|
||||||
function __construct(&$dest=null, ?array $params=null) {
|
function __construct(&$dest=null, ?array $params=null) {
|
||||||
$this->dest =& $dest;
|
$this->dest =& $dest;
|
||||||
$allowEmpty = cl::get($params, "allow_empty");
|
$this->allowEmpty = $params["allow_empty"] ?? static::ALLOW_EMPTY;
|
||||||
if ($allowEmpty === null) $allowEmpty = static::ALLOW_EMPTY;
|
|
||||||
$this->allowEmpty = $allowEmpty;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** @var mixed */
|
||||||
protected $dest;
|
protected $dest;
|
||||||
|
|
||||||
/** tester si la valeur existe sans tenir compte de $allowEmpty */
|
|
||||||
function isPresent($key=null): bool {
|
|
||||||
if ($key === null) return true;
|
|
||||||
$dest = $this->dest;
|
|
||||||
return $dest !== null && array_key_exists($key, $dest);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var bool comment considérer une chaine vide: "" si allowEmpty, null sinon
|
* @var bool comment considérer une chaine vide: "" si allowEmpty, null sinon
|
||||||
*/
|
*/
|
||||||
protected $allowEmpty;
|
protected $allowEmpty;
|
||||||
|
|
||||||
|
protected ?ValueAccess $valueAccess = null;
|
||||||
|
protected ?array $keyAccess = null;
|
||||||
|
|
||||||
|
protected function access($key): IAccess {
|
||||||
|
if ($key === null) {
|
||||||
|
return $this->valueAccess ??= new ValueAccess($this->dest, [
|
||||||
|
"allow_null" => true,
|
||||||
|
"allow_empty" => $this->allowEmpty,
|
||||||
|
]);
|
||||||
|
} else {
|
||||||
|
return $this->keyAccess[$key] ??= new KeyAccess($this->dest, $key, [
|
||||||
|
"allow_empty" => $this->allowEmpty,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** tester si la valeur existe sans tenir compte de $allowEmpty */
|
||||||
|
function isPresent($key=null): bool {
|
||||||
|
return $this->access($key)->exists();
|
||||||
|
}
|
||||||
|
|
||||||
/** tester si la valeur est disponible en tenant compte de $allowEmpty */
|
/** tester si la valeur est disponible en tenant compte de $allowEmpty */
|
||||||
function isAvailable($key=null): bool {
|
function isAvailable($key=null): bool {
|
||||||
if ($key === null) return true;
|
return $this->access($key)->available();
|
||||||
$dest = $this->dest;
|
|
||||||
if ($dest === null || !array_key_exists($key, $dest)) return false;
|
|
||||||
return $this->allowEmpty || $dest[$key] !== "";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function get($key=null) {
|
function get($key=null) {
|
||||||
$dest = $this->dest;
|
return $this->access($key)->get();
|
||||||
if ($key === null) return $dest;
|
|
||||||
if ($dest === null || !array_key_exists($key, $dest)) return null;
|
|
||||||
$value = $dest[$key];
|
|
||||||
if ($value === "" && !$this->allowEmpty) return null;
|
|
||||||
return $value;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function set($value, $key=null): void {
|
function set($value, $key=null): void {
|
||||||
if ($key === null) $this->dest = $value;
|
$this->access($key)->set($value);
|
||||||
else $this->dest[$key] = $value;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function unset($key=null): void {
|
function unset($key=null): void {
|
||||||
if ($key === null) $this->dest = null;
|
$this->access($key)->del();
|
||||||
else unset($this->dest[$key]);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
<?php
|
<?php
|
||||||
namespace nur\sery\wip\schema\input;
|
namespace nur\sery\wip\schema\input;
|
||||||
|
|
||||||
|
use nur\sery\wip\php\access\IAccess;
|
||||||
|
use nur\sery\wip\php\access\PostAccess;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class PostInput: accès à des paramètres de formulaire de type POST uniquement
|
* Class PostInput: accès à des paramètres de formulaire de type POST uniquement
|
||||||
*
|
*
|
||||||
|
@ -8,28 +11,9 @@ namespace nur\sery\wip\schema\input;
|
||||||
* une référence
|
* une référence
|
||||||
*/
|
*/
|
||||||
class PostInput extends FormInput {
|
class PostInput extends FormInput {
|
||||||
function isPresent($key=null): bool {
|
protected function formAccess($key): IAccess {
|
||||||
if ($key === null) return false;
|
return new PostAccess($key, [
|
||||||
return array_key_exists($key, $_POST);
|
"allow_empty" => $this->allowEmpty,
|
||||||
}
|
]);
|
||||||
|
|
||||||
function isAvailable($key=null): bool {
|
|
||||||
if ($key === null) return false;
|
|
||||||
if (array_key_exists($key, $_POST)) {
|
|
||||||
return $this->allowEmpty || $_POST[$key] !== "";
|
|
||||||
} else {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function get($key=null) {
|
|
||||||
if ($key === null) return null;
|
|
||||||
if (array_key_exists($key, $_POST)) {
|
|
||||||
$value = $_POST[$key];
|
|
||||||
if ($value === "" && !$this->allowEmpty) return null;
|
|
||||||
return $value;
|
|
||||||
} else {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue