method"] ou [anything, "->method"] pour indiquer * qu'il faut d'abord instancier $ROW_CLASS($row) avant d'appeler la méthode */ protected function GENKEY_FUNC(): ?array { return static::GENKEY_FUNC; } const GENKEY_FUNC = null; function createBindings(?array &$bindings, ?array $filter, $row=null, ?array $results=null): void { A::merge($bindings, $filter, $row, $results); } function loadResults(?array &$results, array $bindings): void { if ($results === null) return; foreach ($results as $key => &$value) { $value = A::get($bindings, $key); }; unset($value); } /** corriger une valeur avant de la fournir à la base de données */ protected function fixBinding(&$value, $key=null): void { } function prepareBindings(?array &$bindings): void { if ($bindings === null || !$this->FIX_BINDINGS()) return; foreach ($bindings as $key => &$value) { $this->fixBinding($value, $key); }; unset($value); } /** corriger une valeur provenant de la base de données */ protected function fixCol(&$value, $key=null): void { } function loadRow(&$row, &$rowKey): void { if (!is_array($row)) return; if ($this->FORCE_LOWERCASE()) { $row = array_change_key_case($row, CASE_LOWER); } if ($this->FIX_ROWS()) { foreach ($row as $key => &$value) { $this->fixCol($value, $key); }; unset($value); } $row_class = $this->ROW_CLASS(); $genkey_func = $this->GENKEY_FUNC(); if ($row_class !== null) { if ($genkey_func !== null) { func::fix_static($genkey_func, $row_class); if (func::is_method($genkey_func)) { $row = func::cons($row_class, $row); func::fix_method($genkey_func, $row); $rowKey = func::call($genkey_func); } else { $rowKey = func::call($genkey_func, $row); $row = func::cons($row_class, $row); } } else { $row = func::cons($row_class, $row); } } elseif ($genkey_func !== null) { $rowKey = func::call($genkey_func, $row); } } }