nur-sery/nur_src/valm.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);
}
}
}