cii-text-analysis/Lib/Discriminant/WhiteList.php
Jéremy Munsch f68d2ac333
premier poc
2026-02-11 08:24:04 +01:00

46 lines
1.2 KiB
PHP

<?php
declare(strict_types=1);
namespace Classifier\Lib\Discriminant;
use Classifier\Lib\Utils\StringCleaner;
class WhiteList
{
/** @var array<string,int> */
private $keywords;
public function __construct(array $keywords, StringCleaner $cleaner)
{
foreach ($keywords as $keyword => $score) {
$cleanedKeyword = $cleaner->getCleanChain($keyword);
if (!is_string($cleanedKeyword) || preg_match('/\s/', $cleanedKeyword)) {
throw new \InvalidArgumentException(
'Erreur : Les mots-clés de la whitelist doivent être des chaînes de caractères simples (sans espaces).'
);
}
if (!is_numeric($score) || $score < 0) {
throw new \InvalidArgumentException(
"Erreur : Le score pour le mot-clé '{$cleanedKeyword}' doit être un nombre positif."
);
}
$keywords[$cleanedKeyword] = (int)$score;
}
$this->keywords = $keywords;
}
/**
* Retourne la liste des mots-clés avec leurs poids associés
*
* @return array<string,int>
*/
public function getKeywords(): array
{
return $this->keywords;
}
}