classes = []; foreach ($samples as $sample) { if (!isset($this->classes[(string) $sample])) { $this->classes[(string) $sample] = count($this->classes); } } } public function transform(array &$samples, ?array &$targets = null): void { foreach ($samples as &$sample) { $sample = $this->classes[(string) $sample]; } } public function inverseTransform(array &$samples): void { $classes = array_flip($this->classes); foreach ($samples as &$sample) { $sample = $classes[$sample]; } } /** * @return string[] */ public function classes(): array { return array_keys($this->classes); } }