<?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); } } }