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