85 lines
2.4 KiB
PHP
85 lines
2.4 KiB
PHP
<?php
|
|
namespace nulib\values;
|
|
|
|
use ArrayAccess;
|
|
use nulib\str;
|
|
|
|
/**
|
|
* Class valx: frontend pour accéder à une propriété d'un objet ou à la clé
|
|
* d'un tableau. cette classe utilise {@link oprop} 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 valx {
|
|
static final function get($src, $name, $default=null) {
|
|
if (is_object($src) && !($src instanceof ArrayAccess)) {
|
|
$name = str::us2camel($name);
|
|
return oprop::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 oprop::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)) {
|
|
oprop::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 oprop::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 oprop::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);
|
|
oprop::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);
|
|
oprop::append($dest, $name, $value);
|
|
} else {
|
|
akey::append($dest, $name, $value);
|
|
}
|
|
}
|
|
}
|