nur-sery/nur_src/valx.php

84 lines
2.4 KiB
PHP
Raw Normal View History

2023-12-03 22:10:18 +04:00
<?php
namespace nur;
use ArrayAccess;
/**
* 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);
}
}
}