35 lines
		
	
	
		
			972 B
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			35 lines
		
	
	
		
			972 B
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
namespace nur\b\coll;
 | 
						|
 | 
						|
/**
 | 
						|
 * Class BaseArray: implémentation de base d'un tableau
 | 
						|
 *
 | 
						|
 * Les classes dérivées *doivent* implémenter les méthodes has(), get(), set()
 | 
						|
 * et del() qui peuvent simplement être implémentée comme des méthodes déléguées
 | 
						|
 * de respectivement {@link _has()}, {@link _get()}, {@link _set()} et
 | 
						|
 * {@link _del()}.
 | 
						|
 *
 | 
						|
 * Ce mode opératoire permet de créer ces méthodes avec une signature appropriée,
 | 
						|
 * permettant à un IDE de découvrir le type des données qui sont accédées
 | 
						|
 */
 | 
						|
abstract class BaseArray implements IArray {
 | 
						|
  use TBaseArray;
 | 
						|
 | 
						|
  function __construct(?array $data=null) {
 | 
						|
    if ($data === null) $data = [];
 | 
						|
    $this->data = $data;
 | 
						|
  }
 | 
						|
 | 
						|
  static function __set_state(array $data): self {
 | 
						|
    $array = new static();
 | 
						|
    foreach ($data as $key => $value) {
 | 
						|
      $array->$key = $value;
 | 
						|
    }
 | 
						|
    return $array;
 | 
						|
  }
 | 
						|
 | 
						|
  function _haveMethod(string $method): bool {
 | 
						|
    return method_exists($this, $method);
 | 
						|
  }
 | 
						|
}
 |