nur-sery/nur_src/b/coll/BaseArray.php

35 lines
972 B
PHP
Raw Normal View History

2023-12-03 22:10:18 +04:00
<?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);
}
}