46 lines
1.2 KiB
PHP
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;
|
|
}
|
|
}
|