84 lines
2.4 KiB
PHP
84 lines
2.4 KiB
PHP
|
<?php
|
||
|
namespace nur;
|
||
|
|
||
|
use ArrayAccess;
|
||
|
|
||
|
/**
|
||
|
* Class valm: frontend pour accéder à une propriété d'un objet (par une méthode
|
||
|
* normalisée ou en direct) ou à la clé d'un tableau. cette classe utilise
|
||
|
* {@link prop} ou {@link akey} en fonction de la nature de la cible
|
||
|
*
|
||
|
* si la cible est un objet, les noms des clés sont transformés en camelCase
|
||
|
* pour avoir les propriétés correspondantes
|
||
|
*/
|
||
|
class valm {
|
||
|
static final function get($src, $name, $default=null) {
|
||
|
if (is_object($src) && !($src instanceof ArrayAccess)) {
|
||
|
$name = str::us2camel($name);
|
||
|
return prop::get($src, $name, $default);
|
||
|
} else {
|
||
|
return akey::get($src, $name, $default);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
static final function set(&$dest, $name, $value) {
|
||
|
if (is_object($dest) && !($dest instanceof ArrayAccess)) {
|
||
|
$name = str::us2camel($name);
|
||
|
return prop::set($dest, $name, $value);
|
||
|
} else {
|
||
|
return akey::set($dest, $name, $value);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* initialiser $dest avec les valeurs de $values
|
||
|
*
|
||
|
* si $dest est un objet, les noms des clés sont transformées en camelCase
|
||
|
* pour avoir les propriétés correspondantes
|
||
|
*/
|
||
|
static final function set_values(&$dest, ?array $values): void {
|
||
|
if ($values === null) return;
|
||
|
if (is_object($dest) && !($dest instanceof ArrayAccess)) {
|
||
|
prop::set_values($dest, $values);
|
||
|
} else {
|
||
|
akey::set_values($dest, $values);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
static final function inc(&$dest, $name): int {
|
||
|
if (is_object($dest) && !($dest instanceof ArrayAccess)) {
|
||
|
$name = str::us2camel($name);
|
||
|
return prop::inc($dest, $name);
|
||
|
} else {
|
||
|
return akey::inc($dest, $name);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
static final function dec(&$dest, $name): int {
|
||
|
if (is_object($dest) && !($dest instanceof ArrayAccess)) {
|
||
|
$name = str::us2camel($name);
|
||
|
return prop::dec($dest, $name);
|
||
|
} else {
|
||
|
return akey::dec($dest, $name);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
static final function merge(&$dest, $name, $merge): void {
|
||
|
if (is_object($dest) && !($dest instanceof ArrayAccess)) {
|
||
|
$name = str::us2camel($name);
|
||
|
prop::merge($dest, $name, $merge);
|
||
|
} else {
|
||
|
akey::merge($dest, $name, $merge);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
static final function append(&$dest, $name, $value): void {
|
||
|
if (is_object($dest) && !($dest instanceof ArrayAccess)) {
|
||
|
$name = str::us2camel($name);
|
||
|
prop::append($dest, $name, $value);
|
||
|
} else {
|
||
|
akey::append($dest, $name, $value);
|
||
|
}
|
||
|
}
|
||
|
}
|