header = $header; $this->regexListe = $regexListe; $headerSpec = new ExactHeaderSpecification($this->header); $columnSpecs = []; foreach ($header as $col) { // Si regex définie → priorité if (isset($regexListe[$col])) { $columnSpecs[$col] = new RegexColumnSpecification( $regexListe[$col], "Le format de la colonne '$col' est invalide." ); } elseif (in_array($col, $requiredColumns)) { $columnSpecs[$col] = new RequiredColumnSpecification("La colonne '$col' est obligatoire."); } } $fileProcessor = new BasicCsvFileProcessor(); $validator = new CsvValidator($headerSpec, $columnSpecs); $errorHandler = new LoggingErrorHandler($logger); $mainProcessor = new MainProcessor(); $this->importer = new CsvImporter($fileProcessor, $validator,$errorHandler, $mainProcessor, ); $result = $this->importer->import($filePath); return [ 'success' => $result->isSuccess(), 'errors' => $result->getErrors(), 'processedCount' => $result->getProcessedCount(), 'message' => $result->getMessage(), ]; } }