40 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
namespace nur\b\coll;
 | 
						|
 | 
						|
/**
 | 
						|
 * Trait TGenericArray: méthodes supplémentaires à utiliser avec les traits
 | 
						|
 * {@link TBaseArray} et {@link TIterableArray} pour que l'objet soit utilisable
 | 
						|
 *
 | 
						|
 */
 | 
						|
trait TGenericArray {
 | 
						|
  # ArrayAccess
 | 
						|
  function has($key): bool { return $this->_has($key); }
 | 
						|
  function &get($key, $default=null) { return $this->_get($key, $default); }
 | 
						|
  function set($key, $value): IArray { return $this->_set($key, $value); }
 | 
						|
  function add($value): IArray { return $this->_set(null, $value); }
 | 
						|
  function del($key): IArray { return $this->_del($key); }
 | 
						|
  # Iterator
 | 
						|
  function key() { return $this->_key(); }
 | 
						|
  function current() { return $this->_current(); }
 | 
						|
 | 
						|
  function addAll(?array $values): IArray {
 | 
						|
    if ($values !== null) {
 | 
						|
      $index = 0;
 | 
						|
      foreach ($values as $key => $value) {
 | 
						|
        if ($key === $index) {
 | 
						|
          $this->add($value);
 | 
						|
          $index++;
 | 
						|
        } else {
 | 
						|
          $this->set($key, $value);
 | 
						|
        }
 | 
						|
      }
 | 
						|
    }
 | 
						|
    return $this;
 | 
						|
  }
 | 
						|
 | 
						|
  function resetAll(?array $values): IArray {
 | 
						|
    $this->data = [];
 | 
						|
    return $this->addAll($values);
 | 
						|
  }
 | 
						|
}
 |