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