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