84 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			84 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?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);
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 |