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