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